From df9427f518f028ceb17b0ea5f8f69f69e6083139 Mon Sep 17 00:00:00 2001
From: Piotr <piotr.rygielski@uni-wuerzburg.de>
Date: Thu, 13 Aug 2015 17:57:54 +0200
Subject: [PATCH] adding xtext files

---
 tools.descartes.dml.dni.text.sdk/.project     |    17 +
 .../build.properties                          |     1 +
 tools.descartes.dml.dni.text.sdk/feature.xml  |    17 +
 tools.descartes.dml.dni.text.tests/.classpath |     9 +
 tools.descartes.dml.dni.text.tests/.project   |    34 +
 .../org.eclipse.core.resources.prefs          |     2 +
 .../.settings/org.eclipse.jdt.core.prefs      |     7 +
 .../META-INF/MANIFEST.MF                      |    24 +
 .../dni/text/DNITextInjectorProvider.class    |   Bin 0 -> 1647 bytes
 .../dni/text/DNITextUiInjectorProvider.class  |   Bin 0 -> 774 bytes
 .../build.properties                          |     5 +
 .../dml/dni/text/DNITextInjectorProvider.java |    48 +
 .../dni/text/DNITextUiInjectorProvider.java   |    17 +
 .../tools.descartes.dml.dni.text.tests.launch |    13 +
 tools.descartes.dml.dni.text.ui/.classpath    |     9 +
 tools.descartes.dml.dni.text.ui/.project      |    34 +
 .../org.eclipse.core.resources.prefs          |     2 +
 .../.settings/org.eclipse.jdt.core.prefs      |     7 +
 .../META-INF/MANIFEST.MF                      |    25 +
 .../dni/text/ui/AbstractDNITextUiModule.class |   Bin 0 -> 11248 bytes
 .../DNITextExecutableExtensionFactory.class   |   Bin 0 -> 926 bytes
 .../dml/dni/text/ui/DNITextUiModule.class     |   Bin 0 -> 480 bytes
 .../.DNITextProposalProvider.java._trace      |   Bin 0 -> 410 bytes
 .../.DNITextProposalProvider.xtendbin         |   Bin 0 -> 1762 bytes
 .../AbstractDNITextProposalProvider.class     |   Bin 0 -> 36737 bytes
 .../DNITextProposalProvider.class             |   Bin 0 -> 675 bytes
 .../contentassist/antlr/DNITextParser$1.class |   Bin 0 -> 52308 bytes
 .../contentassist/antlr/DNITextParser.class   |   Bin 0 -> 3387 bytes
 .../PartialDNITextContentAssistParser.class   |   Bin 0 -> 2418 bytes
 .../antlr/internal/InternalDNIText.g          | 31204 ++++++
 .../antlr/internal/InternalDNIText.tokens     |   309 +
 .../internal/InternalDNITextLexer$DFA12.class |   Bin 0 -> 4760 bytes
 .../antlr/internal/InternalDNITextLexer.class |   Bin 0 -> 76271 bytes
 .../InternalDNITextParser$FollowSets000.class |   Bin 0 -> 120667 bytes
 .../InternalDNITextParser$FollowSets001.class |   Bin 0 -> 121589 bytes
 .../InternalDNITextParser$FollowSets002.class |   Bin 0 -> 82157 bytes
 .../internal/InternalDNITextParser.class      |   Bin 0 -> 954060 bytes
 .../text/ui/internal/DNITextActivator.class   |   Bin 0 -> 4032 bytes
 ...NITextDescriptionLabelProvider.java._trace |   Bin 0 -> 413 bytes
 .../.DNITextDescriptionLabelProvider.xtendbin |   Bin 0 -> 1869 bytes
 .../.DNITextLabelProvider.java._trace         |   Bin 0 -> 894 bytes
 .../labeling/.DNITextLabelProvider.xtendbin   |   Bin 0 -> 2426 bytes
 .../DNITextDescriptionLabelProvider.class     |   Bin 0 -> 689 bytes
 .../ui/labeling/DNITextLabelProvider.class    |   Bin 0 -> 872 bytes
 .../.DNITextOutlineTreeProvider.java._trace   |   Bin 0 -> 407 bytes
 .../.DNITextOutlineTreeProvider.xtendbin      |   Bin 0 -> 1738 bytes
 .../outline/DNITextOutlineTreeProvider.class  |   Bin 0 -> 665 bytes
 .../.DNITextQuickfixProvider.java._trace      |   Bin 0 -> 405 bytes
 .../.DNITextQuickfixProvider.xtendbin         |   Bin 0 -> 1704 bytes
 .../ui/quickfix/DNITextQuickfixProvider.class |   Bin 0 -> 644 bytes
 .../build.properties                          |     6 +
 tools.descartes.dml.dni.text.ui/plugin.xml    |   425 +
 .../plugin.xml_gen                            |   425 +
 .../dni/text/ui/AbstractDNITextUiModule.java  |   191 +
 .../ui/DNITextExecutableExtensionFactory.java |    29 +
 .../AbstractDNITextProposalProvider.java      |   749 +
 .../ui/contentassist/antlr/DNITextParser.java |   469 +
 .../PartialDNITextContentAssistParser.java    |    38 +
 .../antlr/internal/InternalDNIText.g          | 31204 ++++++
 .../antlr/internal/InternalDNIText.tokens     |   309 +
 .../antlr/internal/InternalDNITextLexer.java  |  6523 ++
 .../antlr/internal/InternalDNITextParser.java | 82618 ++++++++++++++++
 .../text/ui/internal/DNITextActivator.java    |    95 +
 .../dml/dni/text/ui/DNITextUiModule.java      |    15 +
 .../DNITextProposalProvider.xtend             |    13 +
 .../DNITextDescriptionLabelProvider.xtend     |    24 +
 .../ui/labeling/DNITextLabelProvider.xtend    |    29 +
 .../outline/DNITextOutlineTreeProvider.xtend  |    13 +
 .../ui/quickfix/DNITextQuickfixProvider.xtend |    26 +
 .../.DNITextProposalProvider.java._trace      |   Bin 0 -> 410 bytes
 .../.DNITextProposalProvider.xtendbin         |   Bin 0 -> 1762 bytes
 .../DNITextProposalProvider.java              |    14 +
 ...NITextDescriptionLabelProvider.java._trace |   Bin 0 -> 413 bytes
 .../.DNITextDescriptionLabelProvider.xtendbin |   Bin 0 -> 1869 bytes
 .../.DNITextLabelProvider.java._trace         |   Bin 0 -> 894 bytes
 .../labeling/.DNITextLabelProvider.xtendbin   |   Bin 0 -> 2426 bytes
 .../DNITextDescriptionLabelProvider.java      |    15 +
 .../ui/labeling/DNITextLabelProvider.java     |    21 +
 .../.DNITextOutlineTreeProvider.java._trace   |   Bin 0 -> 407 bytes
 .../.DNITextOutlineTreeProvider.xtendbin      |   Bin 0 -> 1738 bytes
 .../outline/DNITextOutlineTreeProvider.java   |    15 +
 .../.DNITextQuickfixProvider.java._trace      |   Bin 0 -> 405 bytes
 .../.DNITextQuickfixProvider.xtendbin         |   Bin 0 -> 1704 bytes
 .../ui/quickfix/DNITextQuickfixProvider.java  |    15 +
 84 files changed, 155065 insertions(+)
 create mode 100644 tools.descartes.dml.dni.text.sdk/.project
 create mode 100644 tools.descartes.dml.dni.text.sdk/build.properties
 create mode 100644 tools.descartes.dml.dni.text.sdk/feature.xml
 create mode 100644 tools.descartes.dml.dni.text.tests/.classpath
 create mode 100644 tools.descartes.dml.dni.text.tests/.project
 create mode 100644 tools.descartes.dml.dni.text.tests/.settings/org.eclipse.core.resources.prefs
 create mode 100644 tools.descartes.dml.dni.text.tests/.settings/org.eclipse.jdt.core.prefs
 create mode 100644 tools.descartes.dml.dni.text.tests/META-INF/MANIFEST.MF
 create mode 100644 tools.descartes.dml.dni.text.tests/bin/tools/descatres/dml/dni/text/DNITextInjectorProvider.class
 create mode 100644 tools.descartes.dml.dni.text.tests/bin/tools/descatres/dml/dni/text/DNITextUiInjectorProvider.class
 create mode 100644 tools.descartes.dml.dni.text.tests/build.properties
 create mode 100644 tools.descartes.dml.dni.text.tests/src-gen/tools/descatres/dml/dni/text/DNITextInjectorProvider.java
 create mode 100644 tools.descartes.dml.dni.text.tests/src-gen/tools/descatres/dml/dni/text/DNITextUiInjectorProvider.java
 create mode 100644 tools.descartes.dml.dni.text.tests/tools.descartes.dml.dni.text.tests.launch
 create mode 100644 tools.descartes.dml.dni.text.ui/.classpath
 create mode 100644 tools.descartes.dml.dni.text.ui/.project
 create mode 100644 tools.descartes.dml.dni.text.ui/.settings/org.eclipse.core.resources.prefs
 create mode 100644 tools.descartes.dml.dni.text.ui/.settings/org.eclipse.jdt.core.prefs
 create mode 100644 tools.descartes.dml.dni.text.ui/META-INF/MANIFEST.MF
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/AbstractDNITextUiModule.class
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/DNITextExecutableExtensionFactory.class
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/DNITextUiModule.class
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/.DNITextProposalProvider.java._trace
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/.DNITextProposalProvider.xtendbin
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/AbstractDNITextProposalProvider.class
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/DNITextProposalProvider.class
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/DNITextParser$1.class
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/DNITextParser.class
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/PartialDNITextContentAssistParser.class
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.tokens
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextLexer$DFA12.class
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextLexer.class
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextParser$FollowSets000.class
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextParser$FollowSets001.class
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextParser$FollowSets002.class
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextParser.class
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/internal/DNITextActivator.class
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/labeling/.DNITextDescriptionLabelProvider.java._trace
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/labeling/.DNITextDescriptionLabelProvider.xtendbin
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/labeling/.DNITextLabelProvider.java._trace
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/labeling/.DNITextLabelProvider.xtendbin
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/labeling/DNITextDescriptionLabelProvider.class
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/labeling/DNITextLabelProvider.class
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/outline/.DNITextOutlineTreeProvider.java._trace
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/outline/.DNITextOutlineTreeProvider.xtendbin
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/outline/DNITextOutlineTreeProvider.class
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/quickfix/.DNITextQuickfixProvider.java._trace
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/quickfix/.DNITextQuickfixProvider.xtendbin
 create mode 100644 tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/quickfix/DNITextQuickfixProvider.class
 create mode 100644 tools.descartes.dml.dni.text.ui/build.properties
 create mode 100644 tools.descartes.dml.dni.text.ui/plugin.xml
 create mode 100644 tools.descartes.dml.dni.text.ui/plugin.xml_gen
 create mode 100644 tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/AbstractDNITextUiModule.java
 create mode 100644 tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/DNITextExecutableExtensionFactory.java
 create mode 100644 tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/AbstractDNITextProposalProvider.java
 create mode 100644 tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/DNITextParser.java
 create mode 100644 tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/PartialDNITextContentAssistParser.java
 create mode 100644 tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g
 create mode 100644 tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.tokens
 create mode 100644 tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextLexer.java
 create mode 100644 tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextParser.java
 create mode 100644 tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/internal/DNITextActivator.java
 create mode 100644 tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/DNITextUiModule.java
 create mode 100644 tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/contentassist/DNITextProposalProvider.xtend
 create mode 100644 tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/labeling/DNITextDescriptionLabelProvider.xtend
 create mode 100644 tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/labeling/DNITextLabelProvider.xtend
 create mode 100644 tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/outline/DNITextOutlineTreeProvider.xtend
 create mode 100644 tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/quickfix/DNITextQuickfixProvider.xtend
 create mode 100644 tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/contentassist/.DNITextProposalProvider.java._trace
 create mode 100644 tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/contentassist/.DNITextProposalProvider.xtendbin
 create mode 100644 tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/contentassist/DNITextProposalProvider.java
 create mode 100644 tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/.DNITextDescriptionLabelProvider.java._trace
 create mode 100644 tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/.DNITextDescriptionLabelProvider.xtendbin
 create mode 100644 tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/.DNITextLabelProvider.java._trace
 create mode 100644 tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/.DNITextLabelProvider.xtendbin
 create mode 100644 tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/DNITextDescriptionLabelProvider.java
 create mode 100644 tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/DNITextLabelProvider.java
 create mode 100644 tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/outline/.DNITextOutlineTreeProvider.java._trace
 create mode 100644 tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/outline/.DNITextOutlineTreeProvider.xtendbin
 create mode 100644 tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/outline/DNITextOutlineTreeProvider.java
 create mode 100644 tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/quickfix/.DNITextQuickfixProvider.java._trace
 create mode 100644 tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/quickfix/.DNITextQuickfixProvider.xtendbin
 create mode 100644 tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/quickfix/DNITextQuickfixProvider.java

diff --git a/tools.descartes.dml.dni.text.sdk/.project b/tools.descartes.dml.dni.text.sdk/.project
new file mode 100644
index 00000000..4812d74f
--- /dev/null
+++ b/tools.descartes.dml.dni.text.sdk/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>tools.descartes.dml.dni.text.sdk</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/tools.descartes.dml.dni.text.sdk/build.properties b/tools.descartes.dml.dni.text.sdk/build.properties
new file mode 100644
index 00000000..442bd78b
--- /dev/null
+++ b/tools.descartes.dml.dni.text.sdk/build.properties
@@ -0,0 +1 @@
+bin.includes =feature.xml
diff --git a/tools.descartes.dml.dni.text.sdk/feature.xml b/tools.descartes.dml.dni.text.sdk/feature.xml
new file mode 100644
index 00000000..9cdc8527
--- /dev/null
+++ b/tools.descartes.dml.dni.text.sdk/feature.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature id="tools.descartes.dml.dni.text.sdk"
+	label="DNIText SDK Feature "
+	version="1.0.0.qualifier">
+	<plugin
+			id="tools.descartes.dml.dni.text"
+			download-size="0"
+			install-size="0"
+			version="0.0.0"
+			unpack="false"/>
+	<plugin
+			id="tools.descartes.dml.dni.text.ui"
+			download-size="0"
+			install-size="0"
+			version="0.0.0"
+			unpack="false"/>
+</feature>
diff --git a/tools.descartes.dml.dni.text.tests/.classpath b/tools.descartes.dml.dni.text.tests/.classpath
new file mode 100644
index 00000000..d1b97f72
--- /dev/null
+++ b/tools.descartes.dml.dni.text.tests/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="src" path="xtend-gen"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tools.descartes.dml.dni.text.tests/.project b/tools.descartes.dml.dni.text.tests/.project
new file mode 100644
index 00000000..4969a239
--- /dev/null
+++ b/tools.descartes.dml.dni.text.tests/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>tools.descartes.dml.dni.text.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+	</natures>
+</projectDescription>
diff --git a/tools.descartes.dml.dni.text.tests/.settings/org.eclipse.core.resources.prefs b/tools.descartes.dml.dni.text.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000..99f26c02
--- /dev/null
+++ b/tools.descartes.dml.dni.text.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/tools.descartes.dml.dni.text.tests/.settings/org.eclipse.jdt.core.prefs b/tools.descartes.dml.dni.text.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..f42de363
--- /dev/null
+++ b/tools.descartes.dml.dni.text.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/tools.descartes.dml.dni.text.tests/META-INF/MANIFEST.MF b/tools.descartes.dml.dni.text.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..0f3df05f
--- /dev/null
+++ b/tools.descartes.dml.dni.text.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: tools.descartes.dml.dni.text.tests
+Bundle-Vendor: My Company
+Bundle-Version: 1.0.0.qualifier
+Bundle-SymbolicName: tools.descartes.dml.dni.text.tests; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: tools.descartes.dml.dni.text,
+ tools.descartes.dml.dni.text.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.xtext.junit4,
+ org.eclipse.xtext.xbase.lib,
+ org.eclipse.ui.workbench;resolution:=optional,
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional
+Import-Package: org.apache.log4j,
+ org.junit;version="4.5.0",
+ org.junit.runner;version="4.5.0",
+ org.junit.runner.manipulation;version="4.5.0",
+ org.junit.runner.notification;version="4.5.0",
+ org.junit.runners;version="4.5.0",
+ org.junit.runners.model;version="4.5.0",
+ org.hamcrest.core
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: tools.descatres.dml.dni.text
diff --git a/tools.descartes.dml.dni.text.tests/bin/tools/descatres/dml/dni/text/DNITextInjectorProvider.class b/tools.descartes.dml.dni.text.tests/bin/tools/descatres/dml/dni/text/DNITextInjectorProvider.class
new file mode 100644
index 0000000000000000000000000000000000000000..d9dbc99aa6508ecab956ef8824f821f35f3ccc15
GIT binary patch
literal 1647
zcmbu9YflqF6o%iSr7g==5CP>b1+=ZwRk?Tpxmd(BDPV+P{5Wl=bz!?hcDDrlRhq~p
zn)ubkA7wnVT}lmNh_>mT?%6ZXxy(EJ<L8%e0H&}MMGM2UC#B^YCE*si=Lq^&wTzN&
z8lE`tjFt7=7TKJ=BZ{7MUORH%ED0xyFhl1K-{*$K?TWEcP|u@?Fr=kZF+|Za_grBd
z_>i5NZF<v2?jj||khwhmji{Ke=Nx9GT{bH<hf@U%1FpwC@j{fPBhH9fM{v)SHp4>x
zQr;^|7Pu8aP2rB$9h(ZbCaS{r<Qzl4k6$i(!nsI~nZY0!2J=N(H7Zh8EMe5$#@PbG
z#O7%P)b;{HD4E)32xnzUXy`(B6gL=BS1waW4>}mS6wTz8`9Z9RGOt;l%g~WGZLwaf
z7KF3K3znd;yex8Sn>(hu51f&CzZ4B2^y|2#aAEJgNr2h>zidDC*Ip3~RWJ-EQ-2#r
z8yIfu&=FSyNaz^DI73gB?~1J4JKQKY?F7RT!LB@=KW(B)cSlDXG>!fxb)+!N&}-VX
zr#82Iu{5Nkg74{QhsF>mEfjax_?|zvC^8IFSD6njvrF8Pw%8P2ZBN4_`qky3jz=nW
zqNw!QNV#m6R^-dI)j*1Yay#hok-){7>NU*ZaTK!*^Zzpq9Z!7u1oYn~9d}i^=Ls3+
zbPTDAwM|)bielANni{<1Es#+!00up0+rr6O+;s&>s;enQaI7#&Lk^(@t%#BhtF56|
zP*_dfx1<cR5yWr}9TeM1cS-uGPxutqKap)gFI_dVKsQl(aMSmK;z`oMDuXN|e{1>#
zedo&}zBBGG(dz*iz#s)O)i7OEN<nb7IFbI0k?-hBpJMa~6Y2CZ?jB*Jew$VgKT=f4
zFQ}KA0{W@30V;lwd_(jdY08ucGTryrup#Q31R1292~xIy#pJsa7{_>^*!5=XRgX2X
z+8b3*HCmn}l&U&Lg-sk|`n>D<u#!|;s)-S6FrGFTivc4}tv-88AhJ!MYt$@A(5=YO
bDK?s5@c`C>dB5!ESRkv;-3%S|MYR0_7gvmF

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.tests/bin/tools/descatres/dml/dni/text/DNITextUiInjectorProvider.class b/tools.descartes.dml.dni.text.tests/bin/tools/descatres/dml/dni/text/DNITextUiInjectorProvider.class
new file mode 100644
index 0000000000000000000000000000000000000000..4e83e836604a1e4d07a24da35ca34addf80cedaf
GIT binary patch
literal 774
zcmbVKO;6iE5Pchxm>5GK(DEIG)I;Fltwe=drA0y@q(~MZ@p0ccD|aKui`JWnpH(ge
zao`8^M^zoWI3OfAaPZ8|%+4FXee>t<{R4m<Y&a+}>{_kkl=oyB3Tq^t1~Km?id%VY
z`QdTrocx9ABz+lLZBC6Ish%_r$_%r8F%mo$NyJaOS=~XEVOyJs%P>|~spQu=On;at
z`-OL2qA*myD=O_VOtiKx8OjH`CtXZn%7cSRhI*h9c|06+r8yVfSTZyM9g6r;7?s73
z$+G>aQiiX=``EM@rXp#J-(zUDwt`R(c%*d{ORjSEyr{Qb%;STD1%_{L4jd|KwbCRa
zE}n8fv}z>iB|Ut^Vlg+hA_<Ay51RXK#P%eX89wFx{#a0-1ocT!KU2bg6f`5S>R}dZ
z44+%Ula6QBs3dB?$)3SI(?b)=Bb5o#e053u3>TXqb?K|n)|JSUu4HQzaq^6OW&0NH
zO<wlMR`aBbX*zrVFJK0BifH99M>cET$-#iy9U6_L-&pxY$r3db05i`3YGZ)){8sZH
Di098}

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.tests/build.properties b/tools.descartes.dml.dni.text.tests/build.properties
new file mode 100644
index 00000000..c22eebe2
--- /dev/null
+++ b/tools.descartes.dml.dni.text.tests/build.properties
@@ -0,0 +1,5 @@
+source.. = src/,\
+          src-gen/,\
+          xtend-gen/
+bin.includes = META-INF/,\
+       .
diff --git a/tools.descartes.dml.dni.text.tests/src-gen/tools/descatres/dml/dni/text/DNITextInjectorProvider.java b/tools.descartes.dml.dni.text.tests/src-gen/tools/descatres/dml/dni/text/DNITextInjectorProvider.java
new file mode 100644
index 00000000..a585fe32
--- /dev/null
+++ b/tools.descartes.dml.dni.text.tests/src-gen/tools/descatres/dml/dni/text/DNITextInjectorProvider.java
@@ -0,0 +1,48 @@
+/*
+ * generated by Xtext
+ */
+package tools.descatres.dml.dni.text;
+
+import org.eclipse.xtext.junit4.GlobalRegistries;
+import org.eclipse.xtext.junit4.GlobalRegistries.GlobalStateMemento;
+import org.eclipse.xtext.junit4.IInjectorProvider;
+import org.eclipse.xtext.junit4.IRegistryConfigurator;
+
+import com.google.inject.Injector;
+
+public class DNITextInjectorProvider implements IInjectorProvider, IRegistryConfigurator {
+	
+    protected GlobalStateMemento stateBeforeInjectorCreation;
+	protected GlobalStateMemento stateAfterInjectorCreation;
+	protected Injector injector;
+
+	static {
+		GlobalRegistries.initializeDefaults();
+	}
+
+	@Override
+	public Injector getInjector()
+	{
+		if (injector == null) {
+			stateBeforeInjectorCreation = GlobalRegistries.makeCopyOfGlobalState();
+			this.injector = internalCreateInjector();
+			stateAfterInjectorCreation = GlobalRegistries.makeCopyOfGlobalState();
+		}
+		return injector;
+	}
+	
+	protected Injector internalCreateInjector() {
+	    return new DNITextStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+
+	@Override
+	public void restoreRegistry() {
+		stateBeforeInjectorCreation.restoreGlobalState();
+	}
+
+	@Override
+	public void setupRegistry() {
+		getInjector();
+		stateAfterInjectorCreation.restoreGlobalState();
+	}
+}
diff --git a/tools.descartes.dml.dni.text.tests/src-gen/tools/descatres/dml/dni/text/DNITextUiInjectorProvider.java b/tools.descartes.dml.dni.text.tests/src-gen/tools/descatres/dml/dni/text/DNITextUiInjectorProvider.java
new file mode 100644
index 00000000..5df0a85d
--- /dev/null
+++ b/tools.descartes.dml.dni.text.tests/src-gen/tools/descatres/dml/dni/text/DNITextUiInjectorProvider.java
@@ -0,0 +1,17 @@
+/*
+ * generated by Xtext
+ */
+package tools.descatres.dml.dni.text;
+
+import org.eclipse.xtext.junit4.IInjectorProvider;
+
+import com.google.inject.Injector;
+
+public class DNITextUiInjectorProvider implements IInjectorProvider {
+	
+	@Override
+	public Injector getInjector() {
+		return tools.descatres.dml.dni.text.ui.internal.DNITextActivator.getInstance().getInjector("tools.descatres.dml.dni.text.DNIText");
+	}
+	
+}
diff --git a/tools.descartes.dml.dni.text.tests/tools.descartes.dml.dni.text.tests.launch b/tools.descartes.dml.dni.text.tests/tools.descartes.dml.dni.text.tests.launch
new file mode 100644
index 00000000..5acc9737
--- /dev/null
+++ b/tools.descartes.dml.dni.text.tests/tools.descartes.dml.dni.text.tests.launch
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/tools.descartes.dml.dni.text.tests"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=tools.descartes.dml.dni.text.tests"/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="tools.descartes.dml.dni.text.tests"/>
+</launchConfiguration>
diff --git a/tools.descartes.dml.dni.text.ui/.classpath b/tools.descartes.dml.dni.text.ui/.classpath
new file mode 100644
index 00000000..d1b97f72
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="src" path="xtend-gen"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tools.descartes.dml.dni.text.ui/.project b/tools.descartes.dml.dni.text.ui/.project
new file mode 100644
index 00000000..de8c849d
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>tools.descartes.dml.dni.text.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+	</natures>
+</projectDescription>
diff --git a/tools.descartes.dml.dni.text.ui/.settings/org.eclipse.core.resources.prefs b/tools.descartes.dml.dni.text.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 00000000..99f26c02
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/tools.descartes.dml.dni.text.ui/.settings/org.eclipse.jdt.core.prefs b/tools.descartes.dml.dni.text.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..f42de363
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/tools.descartes.dml.dni.text.ui/META-INF/MANIFEST.MF b/tools.descartes.dml.dni.text.ui/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..047e6a49
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: tools.descartes.dml.dni.text.ui
+Bundle-Vendor: My Company
+Bundle-Version: 1.0.0.qualifier
+Bundle-SymbolicName: tools.descartes.dml.dni.text.ui; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: tools.descartes.dml.dni.text;visibility:=reexport,
+ org.eclipse.xtext.ui,
+ org.eclipse.ui.editors;bundle-version="3.5.0",
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ org.eclipse.xtext.ui.shared,
+ org.eclipse.ui,
+ org.eclipse.xtext.builder,
+ org.eclipse.xtext.xbase.lib,
+ org.eclipse.xtext.common.types.ui,
+ org.eclipse.xtext.ui.codetemplates.ui,
+ org.eclipse.compare
+Import-Package: org.apache.log4j
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: tools.descatres.dml.dni.text.ui.quickfix,
+ tools.descatres.dml.dni.text.ui.contentassist,
+ tools.descatres.dml.dni.text.ui.internal,
+ tools.descatres.dml.dni.text.ui.contentassist.antlr
+Bundle-Activator: tools.descatres.dml.dni.text.ui.internal.DNITextActivator
diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/AbstractDNITextUiModule.class b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/AbstractDNITextUiModule.class
new file mode 100644
index 0000000000000000000000000000000000000000..89c76bd136a7ac5a605ed0988e13398b570de439
GIT binary patch
literal 11248
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

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/DNITextExecutableExtensionFactory.class b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/DNITextExecutableExtensionFactory.class
new file mode 100644
index 0000000000000000000000000000000000000000..c5650fa471f485c8499d9f64aca1fe9fa5947e0b
GIT binary patch
literal 926
zcmbtS(M}XG6g`E7VV6;K6+{$}#F)j0sfH)BV6q^PO(wiRc<*-WSe$K5rvvL>=?fYk
z`~W}7aJ##Z4T+M#%e}qrJ?FHy=g;3?zX5DuEy4st%UhclysHW+yi>I5<-BV&_p0xC
zsriS4_7N?2`%0ExbaJ)Z_sSI7nmr-CbzdV?81}8pxRSa4QYcOhLu^)Rsd%eXct^ea
zp=zB8M-=}eW0>C5M*H^+la2LbhRTlZsv0IyjWLC3hPhN5bx`&?${mI4Fw|2kMSd)t
z4)tiW;y>wvVJE%w`<e{ZO!@87bc5P*V?7OzwMC}+M<;sf%(~Bfc-*YvAs$7jGrYS=
zSR1dL5&7kWThi-OK@*Mf81oFXB-%EG7e<oo7Rlb4ad53CG45mTlJ`V~&tq62UTJ$g
zvo^~W*CrhB_8?i;oWV1OmjmJC$|DJRBq5I^;h&R{LBh+IV=Q8Y;Y}kw5vPLZ!eso=
zJ8iP&e`OeIhqiQ5?ddS%S2vn23H(?C*@VmtiY(ZJVnh|E%qUO2{(+hAw3tARVmJm}
zbCzN}Y@mFPs!A9Q?F8^!%Aqg%i3jIc_(scd`1}|=x`Hp_=?K0--2q-Dczx*{&#x0K
OjS*Bw1PrSKnHLxHRPx>c

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/DNITextUiModule.class b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/DNITextUiModule.class
new file mode 100644
index 0000000000000000000000000000000000000000..b85ee9db13b0055b0140bcdc6fb3b1a21fd2a070
GIT binary patch
literal 480
zcma)1!AiqG5PcJ4qp`JG#Je}O;36J8R0^U9g;)gJ-Z#loSGL)bY{cL4BzW)x{3vmf
z>Lr)D1H*fdd9!c6zCS(zT%Z@gBM4`$DMYG@M7mrtS{RXLS~&IUM5)E?cr;-+)%P|n
zjSAosF4vi^<HF@KaSbz}b)_@yhJ^lcWb?UDiP6hKRUa))IoFx^vrb13wJ<oD5&RpQ
zst_C4ZetTILO0Tx8kdV$<r5hjMd(E~k!B`yUGZPhcTc(?oJZ>dH-Zj0=_(K5-$4oC
zqb>79-RUaOL1X9HvwV>_0`VEuBQCy$d%$c6j|*s>_TRDf#>hj+J*?FZPwrxe`Qd5`
RZFHFNJnP+h*B&zu`#;PXfHwdD

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/.DNITextProposalProvider.java._trace b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/.DNITextProposalProvider.java._trace
new file mode 100644
index 0000000000000000000000000000000000000000..86676661ece1a3480373a7ea8cbeed51d6c32d00
GIT binary patch
literal 410
zcma)$F$w}P5Je{{D7xC(DBi%df?#E{2x4I^1UE%s-N+`&wjRJ^*a)7-quBaqH!gyW
z122E_^D_()wFH$VZk5si%HAD3K^sJZR^Hmw$wa%o^0`KLNM({4>2=}d$;iFUyw1FG
z&NwfZ>v)TYO>U3YsT6uPiO#15G6^O&0N1#Z@*Xy!5j^gj;f)?>UVvBWgP--_l@mC4
z1sv>xPmsM1=m9P<$6){)VWOC!kAoLMd7@CzAz*{SM6n1Sf37E9aG8Mb;4XM|kbnOb
Fq&I3}D+d4o

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/.DNITextProposalProvider.xtendbin b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/.DNITextProposalProvider.xtendbin
new file mode 100644
index 0000000000000000000000000000000000000000..c69e276bf5d3e466571caab08b722829d27483ca
GIT binary patch
literal 1762
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
Rf=U7aB7)T<*yaAQ{s#Q_-uwUn

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/AbstractDNITextProposalProvider.class b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/AbstractDNITextProposalProvider.class
new file mode 100644
index 0000000000000000000000000000000000000000..4f77ac5deb587646b2d327db0e6fc986001ee2fc
GIT binary patch
literal 36737
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
R0eZoL4=lzv&0~xu{{>Km$-e*q

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/DNITextProposalProvider.class b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/DNITextProposalProvider.class
new file mode 100644
index 0000000000000000000000000000000000000000..3b7d1b67835341115e2d2897c47919ea0d25910f
GIT binary patch
literal 675
zcmb_ZO-lnY5S{c>V{27BdZ;&DOJhHTT16<f6=7QnEyZhgH)v$LkxjPrZ+Q|tcoqCn
z;_TMz3I#9k&Adq_Zzf;g?;ilrg8d?72n>u;zGj}#E;pgTXyG$2kj#jcVUc963XBL0
z*IH`B`s4c<7AB#3QJVY6OX-QQ2sr|y&06&wZ9?vvl$Hbv*D{dihCue@bWR|5t2{v=
z3)>~gLxDiWmVp>Y3rB=A?)ZYhfvsHb&v_{0{8!AGC#ebC*_+u*v2{g&PE{1TVkqM$
zk5bOnpZSs#I9#9Y3nzLUtZ<Q9ssN4whr&+)WD*a9Sj3DaIY8cegRNH-GC&dIGC&!2
z5KBp%M=mGz-2^MJhx|Dm^(OQ$L-YYHc+{F!e}f@CtDaZWuEd5t`Y(H{uX|ZGZFU>A
Y7VUJ~wKl!%b`TpVH509IL9GG(0g-LUF#rGn

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/DNITextParser$1.class b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/DNITextParser$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..f148ca7f665634c1afa4d00ce77527760308298b
GIT binary patch
literal 52308
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
S<FgE(PvEm0>6Fog|NI}swk0Y6

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/DNITextParser.class b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/DNITextParser.class
new file mode 100644
index 0000000000000000000000000000000000000000..20c8314b55d2d6b761ba9b61f4ffd1b2b80cc489
GIT binary patch
literal 3387
zcmc&$ZF3V<7(F+ANgD!vgIZKTpg__hD}o}X7E5TMk`!!0F`~eBa|sKZ-OlC)%13AX
zK{%syu%qJJIHMo@puflQ+}$Ki+7OUo#%7wkd$Z4Z-p+IG{{GLm-vc;-n^8mrW|ZeS
z6{9FCmZ^NntFmJhUE5G{RT)*=usl~uSDBTHT~UVVD#tg@EzIZn^JUYoNI!~hfs3AB
zGNk3$D-~(1)@^0cR-WG$VrIFbeA80t5Pl|r4*><XmwdBaHvJjPl9h_URHkE;4C0>6
zC+l&YZ?;Ye>|U(8$}Y<#yJ9apa>jK%Wh&cq3H@ru^2$cZ^Gc31Z1;||lrbMHG>p4u
zS!T_Z727TG*@4U*^PXu`mF*bZ<pcdWyX2ax>PvyS)?cSGTT4<;de)I;)-)AbIHp@N
za>}QZ)HFeRr)<|&(*j+I<dQ&l+AGQ!x-b;ScI?n$*sfftmY1cUH<^#XaK^JtXUX(!
zeP7$`R<~^io$g$_=jpJngyl<9$$Ep963G{WwaF#lH64~Xyl7!kDvI3#iyeFYlz2M>
z$1sN1boE{rIFJY$6B5}EiDBfuyV7L~q*+cSm-->FH;x|kYQs0;*pCAOgB7V-m?dx~
z(YXqpiK(00%aN-(N+91E>4nl}-?o*cTC6&9fkYNK73SVLr<+Nc+{#K_kVG8)h($3$
zO1(&jS~@*`JccBW>Xy98$$3T@pOSnFBHOkN298JZ7WJcLPUCnRCpb+kg}~uNQ+k({
z^}MH=Gp=n#@eVs4z%-4gKvagKD{$~R=9`h^lxf|iSk#7ch(XMGj^o|0X#gkmUc0U^
z=ML)GpnJV}^?7O|r}gv#*-FzlQ>ONj9BcoJ<95Q>Iop<kQ6lwJeh|mB7Q?;NQU5_e
zajEWm{@r=^mT&TGsajf=^`jrgaT+rMLlmtIV&tTv-lTZ~Y;?JHPRy=aaz)oDhO?N}
zB%Ko&YbH+qw(s57T1(nRae=hbV&AGMi_-E+6msG;06Fk0!J#Q|y$ydlm*GD(oujWF
ztjJ<ru_JPoGu%e{+J#AOjFPDHI(pN&U>A$h4J49m-IYjQYZ{^2xz&e{IUI{uGP5_X
z=K7H1DHYsgGdI$gvf0^%d>^jVH*<|m&KUh{Qq}2a9WI?^Rp2H8wjRDOvA8kn;iqwo
z;uV2DGk8fEKQ8daOVP2;2f?#)kLA3oZ^=13crR#?$YYx5Jj&-?SNds(Z*;Q4qm9bQ
z_rVB1Jn(oI<(*#pf?aApueSx)`UIe)VF$klxMOe?Tze+gF!)vQ$S}XPF|ZRO{EmkY
z@NO6Hx^>C8qm3`oZG`K{I>riOjW1%86JKM`BkY@e$n6L;)Q%vwJ@mU5L)aHUj)rD6
zNFConj1#mQhj6$Cev5Y+d_N(N{Dy&vbtDUna`GD-(OZ*`aV&x-IH_HAHMtsR`iC$g
z)|*`Iuel-|-o+`pcrUOLBlL0_@6%IQpHz_8mju)m9h-cDvFy=DnBxDLhuL+UEgW6L
zxgQ9Cpo-^fu18sUh#%1-enP+anX>i^2E?yH2ov-{tVRf9n8!y%=wVGRGVcg|_9KHV
zuXI=}{z4SzX|=!-hozq8UC@%=?{KovHGDZ&=pJ6o6?%sAxs6%}Z4-YqwQXn3tH2Vj
z*045u&Sq^k{<F!rr(w*ur$!)}W(;zIjo7onn3&!bf3X06H`Tqjk#uiJ&B1fz&nGpk
tLtI1hJwjnqApAj-kD!BnxQ5TRm~4%mysVkf?DN3*I&N^)^iOi--@ktOtS<ln

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/PartialDNITextContentAssistParser.class b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/PartialDNITextContentAssistParser.class
new file mode 100644
index 0000000000000000000000000000000000000000..9f3d7d5b215e942120e99ac4d5bf9a02e506140a
GIT binary patch
literal 2418
zcmc&#Yi}Dx6g}g(*~HzFHVtWcG)<e5*v@0ayWrrE<^cxVHFfH!fRHBZQ8Mj%*V-M2
zm_NX8;9nF8l0pR^k>E$6-q~F@j<U2$LE^){X78MP?zxZo>+fHG2k<tw45S$DD$jEQ
zt0@ATD__uC%dwiSw3OIaR!3U4=PKbU9t1K_7I&57TQ%-0$(^-oX_Ks0Ba4;Lf_??U
zH;`snc@gLsvj;QCQ1kp9OW2NV2g2GvqSX{iwAv0=M4EWEBTnm0sieDOm12$w<QUR^
z#}N#Z<&)4W+kx`At?rOTfnjh-x>6Mx2C}&ZZCv%5B7*^(Gck+|!$?`WqS|R~3xAVu
zYtYfMXLF~)eW}0W#kAU$0mD}LMI?zM`De9>=Q&N2QX;<-8=lWFm3>}pxyCRUUN&K1
zh~dJHP#d1(c;Bu&qDA>8wtGn!q_iN3JwLH9B-M)Va>we)Sc(@C(oo2i@AExwb(D0h
zRq`!tB|Vpd8LrD6m#dCXavuIKB$g7?dv@f<#48jFXYm@Y7<ipw;@L%JVggqghD0f-
z`QCmvEVVB)xP~bM*C|6uA_XRH;0;oWIzV;H)R|Ox*?vLwTEV~!!=(_w;nWm$<x_9m
z>PV+4{2}BtfUEqjF7^zjF{`V3j(ldL)bwpC<Qh7p1rrt)84RkIDsNGO#(Hl1jWyU?
zCJmW)sD*gDE!-x<d=lyjM=`sChIr4!``X)(@*?U6K46$TDQH+jHP7j`Jiomw?KK&+
zxw3bKuZ1j_Si(otBmqV52<5qvVmJB;-QK=W1$e9|Lk%;yiDj+J#|$(58zM%9QmL<u
z!yUPXfm;mck93c)HPV`ib!?C*(%thOkbE=Qulgi7P9jt^UdrH8d}g4;@O47?|5;O-
z7{}){4thxqg{=#vM<GpE8tn|<oVqzqH5M2$EunV3W>jCJee%STlST7sf*BT)_~@aM
zSP&G+`0)|lZTH6X_oqTy>P!65{QCE!qp0V3U2*$Cg}37aBvbb~zAZMSK4PYydm=38
z+M~*+VM5m#x>9=1)48v|>ExpOS^Bc*$>@0|e+ctOdP(6Wx(|knqZpxgGcv$=T%a!+
zGq^~1y}3x%DQ%sf{TX9NyEEbHWpevUh%g>m#RwW*Q=!9@YV8vJyG$4<velS>(%&>a
zEBT)=_6J7v;}^Wj@B@rTn0)vc)AvTRhsZ}i<{1v~<^kTVJjTs?a{~jjkMQ9kiq-jn
z->`Ck)vehBeDaV0(_vr}<Qlj_Axx0#t5_tBikQSQu2X+ag>>@~fv0pUD5FAj7inJ=
iw~6X9Vb$;jX?cgxv_R2HomMtOU#W{)=ezWtLgNXo3d(T+

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g
new file mode 100644
index 00000000..6d3d2979
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g
@@ -0,0 +1,31204 @@
+/*
+ * generated by Xtext
+ */
+grammar InternalDNIText;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	
+}
+
+@lexer::header {
+package tools.descatres.dml.dni.text.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+}
+
+@parser::header {
+package tools.descatres.dml.dni.text.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import tools.descatres.dml.dni.text.services.DNITextGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private DNITextGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(DNITextGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleNetworkInfrastructure
+entryRuleNetworkInfrastructure 
+:
+{ before(grammarAccess.getNetworkInfrastructureRule()); }
+	 ruleNetworkInfrastructure
+{ after(grammarAccess.getNetworkInfrastructureRule()); } 
+	 EOF 
+;
+
+// Rule NetworkInfrastructure
+ruleNetworkInfrastructure
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getGroup()); }
+(rule__NetworkInfrastructure__Group__0)
+{ after(grammarAccess.getNetworkInfrastructureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFlow
+entryRuleFlow 
+:
+{ before(grammarAccess.getFlowRule()); }
+	 ruleFlow
+{ after(grammarAccess.getFlowRule()); } 
+	 EOF 
+;
+
+// Rule Flow
+ruleFlow
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFlowAccess().getAlternatives()); }
+(rule__Flow__Alternatives)
+{ after(grammarAccess.getFlowAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNode
+entryRuleNode 
+:
+{ before(grammarAccess.getNodeRule()); }
+	 ruleNode
+{ after(grammarAccess.getNodeRule()); } 
+	 EOF 
+;
+
+// Rule Node
+ruleNode
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNodeAccess().getAlternatives()); }
+(rule__Node__Alternatives)
+{ after(grammarAccess.getNodeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLink
+entryRuleLink 
+:
+{ before(grammarAccess.getLinkRule()); }
+	 ruleLink
+{ after(grammarAccess.getLinkRule()); } 
+	 EOF 
+;
+
+// Rule Link
+ruleLink
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLinkAccess().getAlternatives()); }
+(rule__Link__Alternatives)
+{ after(grammarAccess.getLinkAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDependency
+entryRuleDependency 
+:
+{ before(grammarAccess.getDependencyRule()); }
+	 ruleDependency
+{ after(grammarAccess.getDependencyRule()); } 
+	 EOF 
+;
+
+// Rule Dependency
+ruleDependency
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDependencyAccess().getAlternatives()); }
+(rule__Dependency__Alternatives)
+{ after(grammarAccess.getDependencyAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDNIUnit
+entryRuleDNIUnit 
+:
+{ before(grammarAccess.getDNIUnitRule()); }
+	 ruleDNIUnit
+{ after(grammarAccess.getDNIUnitRule()); } 
+	 EOF 
+;
+
+// Rule DNIUnit
+ruleDNIUnit
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDNIUnitAccess().getSpeedUnitParserRuleCall()); }
+	ruleSpeedUnit
+{ after(grammarAccess.getDNIUnitAccess().getSpeedUnitParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFunction
+entryRuleFunction 
+:
+{ before(grammarAccess.getFunctionRule()); }
+	 ruleFunction
+{ after(grammarAccess.getFunctionRule()); } 
+	 EOF 
+;
+
+// Rule Function
+ruleFunction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFunctionAccess().getAlternatives()); }
+(rule__Function__Alternatives)
+{ after(grammarAccess.getFunctionAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleWorkload
+entryRuleWorkload 
+:
+{ before(grammarAccess.getWorkloadRule()); }
+	 ruleWorkload
+{ after(grammarAccess.getWorkloadRule()); } 
+	 EOF 
+;
+
+// Rule Workload
+ruleWorkload
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getWorkloadAccess().getGenericWorkloadParserRuleCall()); }
+	ruleGenericWorkload
+{ after(grammarAccess.getWorkloadAccess().getGenericWorkloadParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAbstractAction
+entryRuleAbstractAction 
+:
+{ before(grammarAccess.getAbstractActionRule()); }
+	 ruleAbstractAction
+{ after(grammarAccess.getAbstractActionRule()); } 
+	 EOF 
+;
+
+// Rule AbstractAction
+ruleAbstractAction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAbstractActionAccess().getAlternatives()); }
+(rule__AbstractAction__Alternatives)
+{ after(grammarAccess.getAbstractActionAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePerformanceSpecification
+entryRulePerformanceSpecification 
+:
+{ before(grammarAccess.getPerformanceSpecificationRule()); }
+	 rulePerformanceSpecification
+{ after(grammarAccess.getPerformanceSpecificationRule()); } 
+	 EOF 
+;
+
+// Rule PerformanceSpecification
+rulePerformanceSpecification
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPerformanceSpecificationAccess().getAlternatives()); }
+(rule__PerformanceSpecification__Alternatives)
+{ after(grammarAccess.getPerformanceSpecificationAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNetworkInterfacePerfSpec
+entryRuleNetworkInterfacePerfSpec 
+:
+{ before(grammarAccess.getNetworkInterfacePerfSpecRule()); }
+	 ruleNetworkInterfacePerfSpec
+{ after(grammarAccess.getNetworkInterfacePerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule NetworkInterfacePerfSpec
+ruleNetworkInterfacePerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNetworkInterfacePerfSpecAccess().getAlternatives()); }
+(rule__NetworkInterfacePerfSpec__Alternatives)
+{ after(grammarAccess.getNetworkInterfacePerfSpecAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleVirtualNetworkInterfacePerfSpec
+entryRuleVirtualNetworkInterfacePerfSpec 
+:
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecRule()); }
+	 ruleVirtualNetworkInterfacePerfSpec
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule VirtualNetworkInterfacePerfSpec
+ruleVirtualNetworkInterfacePerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getGroup()); }
+(rule__VirtualNetworkInterfacePerfSpec__Group__0)
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePhysicalNetworkInterfacePerfSpec
+entryRulePhysicalNetworkInterfacePerfSpec 
+:
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecRule()); }
+	 rulePhysicalNetworkInterfacePerfSpec
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule PhysicalNetworkInterfacePerfSpec
+rulePhysicalNetworkInterfacePerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getGroup()); }
+(rule__PhysicalNetworkInterfacePerfSpec__Group__0)
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLinkPerfSpec
+entryRuleLinkPerfSpec 
+:
+{ before(grammarAccess.getLinkPerfSpecRule()); }
+	 ruleLinkPerfSpec
+{ after(grammarAccess.getLinkPerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule LinkPerfSpec
+ruleLinkPerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLinkPerfSpecAccess().getAlternatives()); }
+(rule__LinkPerfSpec__Alternatives)
+{ after(grammarAccess.getLinkPerfSpecAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleVirtualLinkPerfSpec
+entryRuleVirtualLinkPerfSpec 
+:
+{ before(grammarAccess.getVirtualLinkPerfSpecRule()); }
+	 ruleVirtualLinkPerfSpec
+{ after(grammarAccess.getVirtualLinkPerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule VirtualLinkPerfSpec
+ruleVirtualLinkPerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getGroup()); }
+(rule__VirtualLinkPerfSpec__Group__0)
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePhysicalLinkPerfSpec
+entryRulePhysicalLinkPerfSpec 
+:
+{ before(grammarAccess.getPhysicalLinkPerfSpecRule()); }
+	 rulePhysicalLinkPerfSpec
+{ after(grammarAccess.getPhysicalLinkPerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule PhysicalLinkPerfSpec
+rulePhysicalLinkPerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getGroup()); }
+(rule__PhysicalLinkPerfSpec__Group__0)
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleIntermediateNodePerfSpec
+entryRuleIntermediateNodePerfSpec 
+:
+{ before(grammarAccess.getIntermediateNodePerfSpecRule()); }
+	 ruleIntermediateNodePerfSpec
+{ after(grammarAccess.getIntermediateNodePerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule IntermediateNodePerfSpec
+ruleIntermediateNodePerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getGroup()); }
+(rule__IntermediateNodePerfSpec__Group__0)
+{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleControlPlanePerfSpec
+entryRuleControlPlanePerfSpec 
+:
+{ before(grammarAccess.getControlPlanePerfSpecRule()); }
+	 ruleControlPlanePerfSpec
+{ after(grammarAccess.getControlPlanePerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule ControlPlanePerfSpec
+ruleControlPlanePerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getGroup()); }
+(rule__ControlPlanePerfSpec__Group__0)
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDataPlanePerfSpec
+entryRuleDataPlanePerfSpec 
+:
+{ before(grammarAccess.getDataPlanePerfSpecRule()); }
+	 ruleDataPlanePerfSpec
+{ after(grammarAccess.getDataPlanePerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule DataPlanePerfSpec
+ruleDataPlanePerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getGroup()); }
+(rule__DataPlanePerfSpec__Group__0)
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEndNodePerfSpec
+entryRuleEndNodePerfSpec 
+:
+{ before(grammarAccess.getEndNodePerfSpecRule()); }
+	 ruleEndNodePerfSpec
+{ after(grammarAccess.getEndNodePerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule EndNodePerfSpec
+ruleEndNodePerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getGroup()); }
+(rule__EndNodePerfSpec__Group__0)
+{ after(grammarAccess.getEndNodePerfSpecAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNetworkInterface
+entryRuleNetworkInterface 
+:
+{ before(grammarAccess.getNetworkInterfaceRule()); }
+	 ruleNetworkInterface
+{ after(grammarAccess.getNetworkInterfaceRule()); } 
+	 EOF 
+;
+
+// Rule NetworkInterface
+ruleNetworkInterface
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNetworkInterfaceAccess().getAlternatives()); }
+(rule__NetworkInterface__Alternatives)
+{ after(grammarAccess.getNetworkInterfaceAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNetworkTraffic
+entryRuleNetworkTraffic 
+:
+{ before(grammarAccess.getNetworkTrafficRule()); }
+	 ruleNetworkTraffic
+{ after(grammarAccess.getNetworkTrafficRule()); } 
+	 EOF 
+;
+
+// Rule NetworkTraffic
+ruleNetworkTraffic
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getGroup()); }
+(rule__NetworkTraffic__Group__0)
+{ after(grammarAccess.getNetworkTrafficAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNetworkStructure
+entryRuleNetworkStructure 
+:
+{ before(grammarAccess.getNetworkStructureRule()); }
+	 ruleNetworkStructure
+{ after(grammarAccess.getNetworkStructureRule()); } 
+	 EOF 
+;
+
+// Rule NetworkStructure
+ruleNetworkStructure
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getGroup()); }
+(rule__NetworkStructure__Group__0)
+{ after(grammarAccess.getNetworkStructureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNetworkConfiguration
+entryRuleNetworkConfiguration 
+:
+{ before(grammarAccess.getNetworkConfigurationRule()); }
+	 ruleNetworkConfiguration
+{ after(grammarAccess.getNetworkConfigurationRule()); } 
+	 EOF 
+;
+
+// Rule NetworkConfiguration
+ruleNetworkConfiguration
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getGroup()); }
+(rule__NetworkConfiguration__Group__0)
+{ after(grammarAccess.getNetworkConfigurationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleExperimentParam
+entryRuleExperimentParam 
+:
+{ before(grammarAccess.getExperimentParamRule()); }
+	 ruleExperimentParam
+{ after(grammarAccess.getExperimentParamRule()); } 
+	 EOF 
+;
+
+// Rule ExperimentParam
+ruleExperimentParam
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getExperimentParamAccess().getGroup()); }
+(rule__ExperimentParam__Group__0)
+{ after(grammarAccess.getExperimentParamAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEString
+entryRuleEString 
+:
+{ before(grammarAccess.getEStringRule()); }
+	 ruleEString
+{ after(grammarAccess.getEStringRule()); } 
+	 EOF 
+;
+
+// Rule EString
+ruleEString
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEStringAccess().getAlternatives()); }
+(rule__EString__Alternatives)
+{ after(grammarAccess.getEStringAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSoftwareComponent
+entryRuleSoftwareComponent 
+:
+{ before(grammarAccess.getSoftwareComponentRule()); }
+	 ruleSoftwareComponent
+{ after(grammarAccess.getSoftwareComponentRule()); } 
+	 EOF 
+;
+
+// Rule SoftwareComponent
+ruleSoftwareComponent
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getGroup()); }
+(rule__SoftwareComponent__Group__0)
+{ after(grammarAccess.getSoftwareComponentAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEntityAddress
+entryRuleEntityAddress 
+:
+{ before(grammarAccess.getEntityAddressRule()); }
+	 ruleEntityAddress
+{ after(grammarAccess.getEntityAddressRule()); } 
+	 EOF 
+;
+
+// Rule EntityAddress
+ruleEntityAddress
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEntityAddressAccess().getGroup()); }
+(rule__EntityAddress__Group__0)
+{ after(grammarAccess.getEntityAddressAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleONOFFFlow
+entryRuleONOFFFlow 
+:
+{ before(grammarAccess.getONOFFFlowRule()); }
+	 ruleONOFFFlow
+{ after(grammarAccess.getONOFFFlowRule()); } 
+	 EOF 
+;
+
+// Rule ONOFFFlow
+ruleONOFFFlow
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getGroup()); }
+(rule__ONOFFFlow__Group__0)
+{ after(grammarAccess.getONOFFFlowAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleGenericFlow
+entryRuleGenericFlow 
+:
+{ before(grammarAccess.getGenericFlowRule()); }
+	 ruleGenericFlow
+{ after(grammarAccess.getGenericFlowRule()); } 
+	 EOF 
+;
+
+// Rule GenericFlow
+ruleGenericFlow
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getGenericFlowAccess().getGroup()); }
+(rule__GenericFlow__Group__0)
+{ after(grammarAccess.getGenericFlowAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNetworkProtocol
+entryRuleNetworkProtocol 
+:
+{ before(grammarAccess.getNetworkProtocolRule()); }
+	 ruleNetworkProtocol
+{ after(grammarAccess.getNetworkProtocolRule()); } 
+	 EOF 
+;
+
+// Rule NetworkProtocol
+ruleNetworkProtocol
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getGroup()); }
+(rule__NetworkProtocol__Group__0)
+{ after(grammarAccess.getNetworkProtocolAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEInt
+entryRuleEInt 
+:
+{ before(grammarAccess.getEIntRule()); }
+	 ruleEInt
+{ after(grammarAccess.getEIntRule()); } 
+	 EOF 
+;
+
+// Rule EInt
+ruleEInt
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEIntAccess().getGroup()); }
+(rule__EInt__Group__0)
+{ after(grammarAccess.getEIntAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEBoolean
+entryRuleEBoolean 
+:
+{ before(grammarAccess.getEBooleanRule()); }
+	 ruleEBoolean
+{ after(grammarAccess.getEBooleanRule()); } 
+	 EOF 
+;
+
+// Rule EBoolean
+ruleEBoolean
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEBooleanAccess().getAlternatives()); }
+(rule__EBoolean__Alternatives)
+{ after(grammarAccess.getEBooleanAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleConstantDoubleVariable
+entryRuleConstantDoubleVariable 
+:
+{ before(grammarAccess.getConstantDoubleVariableRule()); }
+	 ruleConstantDoubleVariable
+{ after(grammarAccess.getConstantDoubleVariableRule()); } 
+	 EOF 
+;
+
+// Rule ConstantDoubleVariable
+ruleConstantDoubleVariable
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getGroup()); }
+(rule__ConstantDoubleVariable__Group__0)
+{ after(grammarAccess.getConstantDoubleVariableAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleConstantLongVariable
+entryRuleConstantLongVariable 
+:
+{ before(grammarAccess.getConstantLongVariableRule()); }
+	 ruleConstantLongVariable
+{ after(grammarAccess.getConstantLongVariableRule()); } 
+	 EOF 
+;
+
+// Rule ConstantLongVariable
+ruleConstantLongVariable
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getGroup()); }
+(rule__ConstantLongVariable__Group__0)
+{ after(grammarAccess.getConstantLongVariableAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRandomVariable
+entryRuleRandomVariable 
+:
+{ before(grammarAccess.getRandomVariableRule()); }
+	 ruleRandomVariable
+{ after(grammarAccess.getRandomVariableRule()); } 
+	 EOF 
+;
+
+// Rule RandomVariable
+ruleRandomVariable
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRandomVariableAccess().getGroup()); }
+(rule__RandomVariable__Group__0)
+{ after(grammarAccess.getRandomVariableAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleContinuousFunction
+entryRuleContinuousFunction 
+:
+{ before(grammarAccess.getContinuousFunctionRule()); }
+	 ruleContinuousFunction
+{ after(grammarAccess.getContinuousFunctionRule()); } 
+	 EOF 
+;
+
+// Rule ContinuousFunction
+ruleContinuousFunction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getGroup()); }
+(rule__ContinuousFunction__Group__0)
+{ after(grammarAccess.getContinuousFunctionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDiscreteFunction
+entryRuleDiscreteFunction 
+:
+{ before(grammarAccess.getDiscreteFunctionRule()); }
+	 ruleDiscreteFunction
+{ after(grammarAccess.getDiscreteFunctionRule()); } 
+	 EOF 
+;
+
+// Rule DiscreteFunction
+ruleDiscreteFunction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getGroup()); }
+(rule__DiscreteFunction__Group__0)
+{ after(grammarAccess.getDiscreteFunctionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEFloat
+entryRuleEFloat 
+:
+{ before(grammarAccess.getEFloatRule()); }
+	 ruleEFloat
+{ after(grammarAccess.getEFloatRule()); } 
+	 EOF 
+;
+
+// Rule EFloat
+ruleEFloat
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEFloatAccess().getGroup()); }
+(rule__EFloat__Group__0)
+{ after(grammarAccess.getEFloatAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSpeedUnit
+entryRuleSpeedUnit 
+:
+{ before(grammarAccess.getSpeedUnitRule()); }
+	 ruleSpeedUnit
+{ after(grammarAccess.getSpeedUnitRule()); } 
+	 EOF 
+;
+
+// Rule SpeedUnit
+ruleSpeedUnit
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getGroup()); }
+(rule__SpeedUnit__Group__0)
+{ after(grammarAccess.getSpeedUnitAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEDouble
+entryRuleEDouble 
+:
+{ before(grammarAccess.getEDoubleRule()); }
+	 ruleEDouble
+{ after(grammarAccess.getEDoubleRule()); } 
+	 EOF 
+;
+
+// Rule EDouble
+ruleEDouble
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEDoubleAccess().getGroup()); }
+(rule__EDouble__Group__0)
+{ after(grammarAccess.getEDoubleAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleELong
+entryRuleELong 
+:
+{ before(grammarAccess.getELongRule()); }
+	 ruleELong
+{ after(grammarAccess.getELongRule()); } 
+	 EOF 
+;
+
+// Rule ELong
+ruleELong
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getELongAccess().getGroup()); }
+(rule__ELong__Group__0)
+{ after(grammarAccess.getELongAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDataSeries
+entryRuleDataSeries 
+:
+{ before(grammarAccess.getDataSeriesRule()); }
+	 ruleDataSeries
+{ after(grammarAccess.getDataSeriesRule()); } 
+	 EOF 
+;
+
+// Rule DataSeries
+ruleDataSeries
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDataSeriesAccess().getGroup()); }
+(rule__DataSeries__Group__0)
+{ after(grammarAccess.getDataSeriesAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTrafficSource
+entryRuleTrafficSource 
+:
+{ before(grammarAccess.getTrafficSourceRule()); }
+	 ruleTrafficSource
+{ after(grammarAccess.getTrafficSourceRule()); } 
+	 EOF 
+;
+
+// Rule TrafficSource
+ruleTrafficSource
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getGroup()); }
+(rule__TrafficSource__Group__0)
+{ after(grammarAccess.getTrafficSourceAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleGenericWorkload
+entryRuleGenericWorkload 
+:
+{ before(grammarAccess.getGenericWorkloadRule()); }
+	 ruleGenericWorkload
+{ after(grammarAccess.getGenericWorkloadRule()); } 
+	 EOF 
+;
+
+// Rule GenericWorkload
+ruleGenericWorkload
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getGroup()); }
+(rule__GenericWorkload__Group__0)
+{ after(grammarAccess.getGenericWorkloadAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBranchAction
+entryRuleBranchAction 
+:
+{ before(grammarAccess.getBranchActionRule()); }
+	 ruleBranchAction
+{ after(grammarAccess.getBranchActionRule()); } 
+	 EOF 
+;
+
+// Rule BranchAction
+ruleBranchAction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBranchActionAccess().getGroup()); }
+(rule__BranchAction__Group__0)
+{ after(grammarAccess.getBranchActionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLoopAction
+entryRuleLoopAction 
+:
+{ before(grammarAccess.getLoopActionRule()); }
+	 ruleLoopAction
+{ after(grammarAccess.getLoopActionRule()); } 
+	 EOF 
+;
+
+// Rule LoopAction
+ruleLoopAction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLoopActionAccess().getGroup()); }
+(rule__LoopAction__Group__0)
+{ after(grammarAccess.getLoopActionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSequenceAction
+entryRuleSequenceAction 
+:
+{ before(grammarAccess.getSequenceActionRule()); }
+	 ruleSequenceAction
+{ after(grammarAccess.getSequenceActionRule()); } 
+	 EOF 
+;
+
+// Rule SequenceAction
+ruleSequenceAction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSequenceActionAccess().getGroup()); }
+(rule__SequenceAction__Group__0)
+{ after(grammarAccess.getSequenceActionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStartAction
+entryRuleStartAction 
+:
+{ before(grammarAccess.getStartActionRule()); }
+	 ruleStartAction
+{ after(grammarAccess.getStartActionRule()); } 
+	 EOF 
+;
+
+// Rule StartAction
+ruleStartAction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStartActionAccess().getGroup()); }
+(rule__StartAction__Group__0)
+{ after(grammarAccess.getStartActionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStopAction
+entryRuleStopAction 
+:
+{ before(grammarAccess.getStopActionRule()); }
+	 ruleStopAction
+{ after(grammarAccess.getStopActionRule()); } 
+	 EOF 
+;
+
+// Rule StopAction
+ruleStopAction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStopActionAccess().getGroup()); }
+(rule__StopAction__Group__0)
+{ after(grammarAccess.getStopActionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTransmitAction
+entryRuleTransmitAction 
+:
+{ before(grammarAccess.getTransmitActionRule()); }
+	 ruleTransmitAction
+{ after(grammarAccess.getTransmitActionRule()); } 
+	 EOF 
+;
+
+// Rule TransmitAction
+ruleTransmitAction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTransmitActionAccess().getGroup()); }
+(rule__TransmitAction__Group__0)
+{ after(grammarAccess.getTransmitActionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleWaitAction
+entryRuleWaitAction 
+:
+{ before(grammarAccess.getWaitActionRule()); }
+	 ruleWaitAction
+{ after(grammarAccess.getWaitActionRule()); } 
+	 EOF 
+;
+
+// Rule WaitAction
+ruleWaitAction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getWaitActionAccess().getGroup()); }
+(rule__WaitAction__Group__0)
+{ after(grammarAccess.getWaitActionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleVirtualNode
+entryRuleVirtualNode 
+:
+{ before(grammarAccess.getVirtualNodeRule()); }
+	 ruleVirtualNode
+{ after(grammarAccess.getVirtualNodeRule()); } 
+	 EOF 
+;
+
+// Rule VirtualNode
+ruleVirtualNode
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getGroup()); }
+(rule__VirtualNode__Group__0)
+{ after(grammarAccess.getVirtualNodeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePhysicalNode
+entryRulePhysicalNode 
+:
+{ before(grammarAccess.getPhysicalNodeRule()); }
+	 rulePhysicalNode
+{ after(grammarAccess.getPhysicalNodeRule()); } 
+	 EOF 
+;
+
+// Rule PhysicalNode
+rulePhysicalNode
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getGroup()); }
+(rule__PhysicalNode__Group__0)
+{ after(grammarAccess.getPhysicalNodeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePhysicalLink
+entryRulePhysicalLink 
+:
+{ before(grammarAccess.getPhysicalLinkRule()); }
+	 rulePhysicalLink
+{ after(grammarAccess.getPhysicalLinkRule()); } 
+	 EOF 
+;
+
+// Rule PhysicalLink
+rulePhysicalLink
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getGroup()); }
+(rule__PhysicalLink__Group__0)
+{ after(grammarAccess.getPhysicalLinkAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleVirtualLink
+entryRuleVirtualLink 
+:
+{ before(grammarAccess.getVirtualLinkRule()); }
+	 ruleVirtualLink
+{ after(grammarAccess.getVirtualLinkRule()); } 
+	 EOF 
+;
+
+// Rule VirtualLink
+ruleVirtualLink
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getGroup()); }
+(rule__VirtualLink__Group__0)
+{ after(grammarAccess.getVirtualLinkAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleProtocolsRepository
+entryRuleProtocolsRepository 
+:
+{ before(grammarAccess.getProtocolsRepositoryRule()); }
+	 ruleProtocolsRepository
+{ after(grammarAccess.getProtocolsRepositoryRule()); } 
+	 EOF 
+;
+
+// Rule ProtocolsRepository
+ruleProtocolsRepository
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getGroup()); }
+(rule__ProtocolsRepository__Group__0)
+{ after(grammarAccess.getProtocolsRepositoryAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRoutesRepository
+entryRuleRoutesRepository 
+:
+{ before(grammarAccess.getRoutesRepositoryRule()); }
+	 ruleRoutesRepository
+{ after(grammarAccess.getRoutesRepositoryRule()); } 
+	 EOF 
+;
+
+// Rule RoutesRepository
+ruleRoutesRepository
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getGroup()); }
+(rule__RoutesRepository__Group__0)
+{ after(grammarAccess.getRoutesRepositoryAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleProtocolStack
+entryRuleProtocolStack 
+:
+{ before(grammarAccess.getProtocolStackRule()); }
+	 ruleProtocolStack
+{ after(grammarAccess.getProtocolStackRule()); } 
+	 EOF 
+;
+
+// Rule ProtocolStack
+ruleProtocolStack
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getProtocolStackAccess().getGroup()); }
+(rule__ProtocolStack__Group__0)
+{ after(grammarAccess.getProtocolStackAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleProtocolLayer
+entryRuleProtocolLayer 
+:
+{ before(grammarAccess.getProtocolLayerRule()); }
+	 ruleProtocolLayer
+{ after(grammarAccess.getProtocolLayerRule()); } 
+	 EOF 
+;
+
+// Rule ProtocolLayer
+ruleProtocolLayer
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getGroup()); }
+(rule__ProtocolLayer__Group__0)
+{ after(grammarAccess.getProtocolLayerAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRoute
+entryRuleRoute 
+:
+{ before(grammarAccess.getRouteRule()); }
+	 ruleRoute
+{ after(grammarAccess.getRouteRule()); } 
+	 EOF 
+;
+
+// Rule Route
+ruleRoute
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRouteAccess().getGroup()); }
+(rule__Route__Group__0)
+{ after(grammarAccess.getRouteAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFlowRoute
+entryRuleFlowRoute 
+:
+{ before(grammarAccess.getFlowRouteRule()); }
+	 ruleFlowRoute
+{ after(grammarAccess.getFlowRouteRule()); } 
+	 EOF 
+;
+
+// Rule FlowRoute
+ruleFlowRoute
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFlowRouteAccess().getGroup()); }
+(rule__FlowRoute__Group__0)
+{ after(grammarAccess.getFlowRouteAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDirection
+entryRuleDirection 
+:
+{ before(grammarAccess.getDirectionRule()); }
+	 ruleDirection
+{ after(grammarAccess.getDirectionRule()); } 
+	 EOF 
+;
+
+// Rule Direction
+ruleDirection
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDirectionAccess().getGroup()); }
+(rule__Direction__Group__0)
+{ after(grammarAccess.getDirectionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleHop
+entryRuleHop 
+:
+{ before(grammarAccess.getHopRule()); }
+	 ruleHop
+{ after(grammarAccess.getHopRule()); } 
+	 EOF 
+;
+
+// Rule Hop
+ruleHop
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getHopAccess().getGroup()); }
+(rule__Hop__Group__0)
+{ after(grammarAccess.getHopAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEIntegerObject
+entryRuleEIntegerObject 
+:
+{ before(grammarAccess.getEIntegerObjectRule()); }
+	 ruleEIntegerObject
+{ after(grammarAccess.getEIntegerObjectRule()); } 
+	 EOF 
+;
+
+// Rule EIntegerObject
+ruleEIntegerObject
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEIntegerObjectAccess().getGroup()); }
+(rule__EIntegerObject__Group__0)
+{ after(grammarAccess.getEIntegerObjectAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePhysicalNetworkInterface
+entryRulePhysicalNetworkInterface 
+:
+{ before(grammarAccess.getPhysicalNetworkInterfaceRule()); }
+	 rulePhysicalNetworkInterface
+{ after(grammarAccess.getPhysicalNetworkInterfaceRule()); } 
+	 EOF 
+;
+
+// Rule PhysicalNetworkInterface
+rulePhysicalNetworkInterface
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup()); }
+(rule__PhysicalNetworkInterface__Group__0)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleVirtualNetworkInterface
+entryRuleVirtualNetworkInterface 
+:
+{ before(grammarAccess.getVirtualNetworkInterfaceRule()); }
+	 ruleVirtualNetworkInterface
+{ after(grammarAccess.getVirtualNetworkInterfaceRule()); } 
+	 EOF 
+;
+
+// Rule VirtualNetworkInterface
+ruleVirtualNetworkInterface
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup()); }
+(rule__VirtualNetworkInterface__Group__0)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+// Rule UnitPrefix
+ruleUnitPrefix
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUnitPrefixAccess().getAlternatives()); }
+(rule__UnitPrefix__Alternatives)
+{ after(grammarAccess.getUnitPrefixAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule Speed
+ruleSpeed
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedAccess().getAlternatives()); }
+(rule__Speed__Alternatives)
+{ after(grammarAccess.getSpeedAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__Flow__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowAccess().getONOFFFlowParserRuleCall_0()); }
+	ruleONOFFFlow
+{ after(grammarAccess.getFlowAccess().getONOFFFlowParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getFlowAccess().getGenericFlowParserRuleCall_1()); }
+	ruleGenericFlow
+{ after(grammarAccess.getFlowAccess().getGenericFlowParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Node__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNodeAccess().getVirtualNodeParserRuleCall_0()); }
+	ruleVirtualNode
+{ after(grammarAccess.getNodeAccess().getVirtualNodeParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNodeAccess().getPhysicalNodeParserRuleCall_1()); }
+	rulePhysicalNode
+{ after(grammarAccess.getNodeAccess().getPhysicalNodeParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Link__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLinkAccess().getPhysicalLinkParserRuleCall_0()); }
+	rulePhysicalLink
+{ after(grammarAccess.getLinkAccess().getPhysicalLinkParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLinkAccess().getVirtualLinkParserRuleCall_1()); }
+	ruleVirtualLink
+{ after(grammarAccess.getLinkAccess().getVirtualLinkParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Dependency__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDependencyAccess().getConstantDoubleVariableParserRuleCall_0()); }
+	ruleConstantDoubleVariable
+{ after(grammarAccess.getDependencyAccess().getConstantDoubleVariableParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDependencyAccess().getConstantLongVariableParserRuleCall_1()); }
+	ruleConstantLongVariable
+{ after(grammarAccess.getDependencyAccess().getConstantLongVariableParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDependencyAccess().getRandomVariableParserRuleCall_2()); }
+	ruleRandomVariable
+{ after(grammarAccess.getDependencyAccess().getRandomVariableParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getDependencyAccess().getContinuousFunctionParserRuleCall_3()); }
+	ruleContinuousFunction
+{ after(grammarAccess.getDependencyAccess().getContinuousFunctionParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getDependencyAccess().getDiscreteFunctionParserRuleCall_4()); }
+	ruleDiscreteFunction
+{ after(grammarAccess.getDependencyAccess().getDiscreteFunctionParserRuleCall_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Function__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionAccess().getContinuousFunctionParserRuleCall_0()); }
+	ruleContinuousFunction
+{ after(grammarAccess.getFunctionAccess().getContinuousFunctionParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getFunctionAccess().getDiscreteFunctionParserRuleCall_1()); }
+	ruleDiscreteFunction
+{ after(grammarAccess.getFunctionAccess().getDiscreteFunctionParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AbstractAction__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAbstractActionAccess().getBranchActionParserRuleCall_0()); }
+	ruleBranchAction
+{ after(grammarAccess.getAbstractActionAccess().getBranchActionParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAbstractActionAccess().getLoopActionParserRuleCall_1()); }
+	ruleLoopAction
+{ after(grammarAccess.getAbstractActionAccess().getLoopActionParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getAbstractActionAccess().getSequenceActionParserRuleCall_2()); }
+	ruleSequenceAction
+{ after(grammarAccess.getAbstractActionAccess().getSequenceActionParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getAbstractActionAccess().getStartActionParserRuleCall_3()); }
+	ruleStartAction
+{ after(grammarAccess.getAbstractActionAccess().getStartActionParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getAbstractActionAccess().getStopActionParserRuleCall_4()); }
+	ruleStopAction
+{ after(grammarAccess.getAbstractActionAccess().getStopActionParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getAbstractActionAccess().getTransmitActionParserRuleCall_5()); }
+	ruleTransmitAction
+{ after(grammarAccess.getAbstractActionAccess().getTransmitActionParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getAbstractActionAccess().getWaitActionParserRuleCall_6()); }
+	ruleWaitAction
+{ after(grammarAccess.getAbstractActionAccess().getWaitActionParserRuleCall_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerformanceSpecification__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPerformanceSpecificationAccess().getIntermediateNodePerfSpecParserRuleCall_0()); }
+	ruleIntermediateNodePerfSpec
+{ after(grammarAccess.getPerformanceSpecificationAccess().getIntermediateNodePerfSpecParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPerformanceSpecificationAccess().getEndNodePerfSpecParserRuleCall_1()); }
+	ruleEndNodePerfSpec
+{ after(grammarAccess.getPerformanceSpecificationAccess().getEndNodePerfSpecParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getPerformanceSpecificationAccess().getLinkPerfSpecParserRuleCall_2()); }
+	ruleLinkPerfSpec
+{ after(grammarAccess.getPerformanceSpecificationAccess().getLinkPerfSpecParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getPerformanceSpecificationAccess().getNetworkInterfacePerfSpecParserRuleCall_3()); }
+	ruleNetworkInterfacePerfSpec
+{ after(grammarAccess.getPerformanceSpecificationAccess().getNetworkInterfacePerfSpecParserRuleCall_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInterfacePerfSpec__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInterfacePerfSpecAccess().getPhysicalNetworkInterfacePerfSpecParserRuleCall_0()); }
+	rulePhysicalNetworkInterfacePerfSpec
+{ after(grammarAccess.getNetworkInterfacePerfSpecAccess().getPhysicalNetworkInterfacePerfSpecParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNetworkInterfacePerfSpecAccess().getVirtualNetworkInterfacePerfSpecParserRuleCall_1()); }
+	ruleVirtualNetworkInterfacePerfSpec
+{ after(grammarAccess.getNetworkInterfacePerfSpecAccess().getVirtualNetworkInterfacePerfSpecParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LinkPerfSpec__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLinkPerfSpecAccess().getPhysicalLinkPerfSpecParserRuleCall_0()); }
+	rulePhysicalLinkPerfSpec
+{ after(grammarAccess.getLinkPerfSpecAccess().getPhysicalLinkPerfSpecParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLinkPerfSpecAccess().getVirtualLinkPerfSpecParserRuleCall_1()); }
+	ruleVirtualLinkPerfSpec
+{ after(grammarAccess.getLinkPerfSpecAccess().getVirtualLinkPerfSpecParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInterface__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInterfaceAccess().getPhysicalNetworkInterfaceParserRuleCall_0()); }
+	rulePhysicalNetworkInterface
+{ after(grammarAccess.getNetworkInterfaceAccess().getPhysicalNetworkInterfaceParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNetworkInterfaceAccess().getVirtualNetworkInterfaceParserRuleCall_1()); }
+	ruleVirtualNetworkInterface
+{ after(grammarAccess.getNetworkInterfaceAccess().getVirtualNetworkInterfaceParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EString__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); }
+	RULE_STRING
+{ after(grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); }
+	RULE_ID
+{ after(grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EBoolean__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEBooleanAccess().getTrueKeyword_0()); }
+
+	'true' 
+
+{ after(grammarAccess.getEBooleanAccess().getTrueKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEBooleanAccess().getFalseKeyword_1()); }
+
+	'false' 
+
+{ after(grammarAccess.getEBooleanAccess().getFalseKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EFloat__Alternatives_4_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEFloatAccess().getEKeyword_4_0_0()); }
+
+	'E' 
+
+{ after(grammarAccess.getEFloatAccess().getEKeyword_4_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEFloatAccess().getEKeyword_4_0_1()); }
+
+	'e' 
+
+{ after(grammarAccess.getEFloatAccess().getEKeyword_4_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EDouble__Alternatives_4_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEDoubleAccess().getEKeyword_4_0_0()); }
+
+	'E' 
+
+{ after(grammarAccess.getEDoubleAccess().getEKeyword_4_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEDoubleAccess().getEKeyword_4_0_1()); }
+
+	'e' 
+
+{ after(grammarAccess.getEDoubleAccess().getEKeyword_4_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UnitPrefix__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUnitPrefixAccess().getNoneEnumLiteralDeclaration_0()); }
+(	'none' 
+)
+{ after(grammarAccess.getUnitPrefixAccess().getNoneEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getUnitPrefixAccess().getKEnumLiteralDeclaration_1()); }
+(	'K' 
+)
+{ after(grammarAccess.getUnitPrefixAccess().getKEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getUnitPrefixAccess().getMEnumLiteralDeclaration_2()); }
+(	'M' 
+)
+{ after(grammarAccess.getUnitPrefixAccess().getMEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getUnitPrefixAccess().getGEnumLiteralDeclaration_3()); }
+(	'G' 
+)
+{ after(grammarAccess.getUnitPrefixAccess().getGEnumLiteralDeclaration_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Speed__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedAccess().getBytesPerSecEnumLiteralDeclaration_0()); }
+(	'BytesPerSec' 
+)
+{ after(grammarAccess.getSpeedAccess().getBytesPerSecEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getSpeedAccess().getBitsPerSecEnumLiteralDeclaration_1()); }
+(	'bitsPerSec' 
+)
+{ after(grammarAccess.getSpeedAccess().getBitsPerSecEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getSpeedAccess().getPacketsPerSecEnumLiteralDeclaration_2()); }
+(	'packetsPerSec' 
+)
+{ after(grammarAccess.getSpeedAccess().getPacketsPerSecEnumLiteralDeclaration_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__NetworkInfrastructure__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__0__Impl
+	rule__NetworkInfrastructure__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getNetworkInfrastructureKeyword_0()); }
+
+	'NetworkInfrastructure' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getNetworkInfrastructureKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__1__Impl
+	rule__NetworkInfrastructure__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__2__Impl
+	rule__NetworkInfrastructure__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getDataCenterNameKeyword_2()); }
+
+	'dataCenterName' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getDataCenterNameKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__3__Impl
+	rule__NetworkInfrastructure__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getDataCenterNameAssignment_3()); }
+(rule__NetworkInfrastructure__DataCenterNameAssignment_3)
+{ after(grammarAccess.getNetworkInfrastructureAccess().getDataCenterNameAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__4__Impl
+	rule__NetworkInfrastructure__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getDataCenterAltNameKeyword_4()); }
+
+	'dataCenterAltName' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getDataCenterAltNameKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__5__Impl
+	rule__NetworkInfrastructure__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getDataCenterAltNameAssignment_5()); }
+(rule__NetworkInfrastructure__DataCenterAltNameAssignment_5)
+{ after(grammarAccess.getNetworkInfrastructureAccess().getDataCenterAltNameAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__6__Impl
+	rule__NetworkInfrastructure__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getTrafficKeyword_6()); }
+
+	'traffic' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getTrafficKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__7__Impl
+	rule__NetworkInfrastructure__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getTrafficAssignment_7()); }
+(rule__NetworkInfrastructure__TrafficAssignment_7)
+{ after(grammarAccess.getNetworkInfrastructureAccess().getTrafficAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__8__Impl
+	rule__NetworkInfrastructure__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getStructureKeyword_8()); }
+
+	'structure' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getStructureKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__9__Impl
+	rule__NetworkInfrastructure__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getStructureAssignment_9()); }
+(rule__NetworkInfrastructure__StructureAssignment_9)
+{ after(grammarAccess.getNetworkInfrastructureAccess().getStructureAssignment_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__10__Impl
+	rule__NetworkInfrastructure__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getConfigurationKeyword_10()); }
+
+	'configuration' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getConfigurationKeyword_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__11__Impl
+	rule__NetworkInfrastructure__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getConfigurationAssignment_11()); }
+(rule__NetworkInfrastructure__ConfigurationAssignment_11)
+{ after(grammarAccess.getNetworkInfrastructureAccess().getConfigurationAssignment_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__12__Impl
+	rule__NetworkInfrastructure__Group__13
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getGroup_12()); }
+(rule__NetworkInfrastructure__Group_12__0)?
+{ after(grammarAccess.getNetworkInfrastructureAccess().getGroup_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__13
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__13__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__13__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getRightCurlyBracketKeyword_13()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getRightCurlyBracketKeyword_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkInfrastructure__Group_12__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group_12__0__Impl
+	rule__NetworkInfrastructure__Group_12__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group_12__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getParamsKeyword_12_0()); }
+
+	'params' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getParamsKeyword_12_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group_12__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group_12__1__Impl
+	rule__NetworkInfrastructure__Group_12__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group_12__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getLeftCurlyBracketKeyword_12_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getLeftCurlyBracketKeyword_12_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group_12__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group_12__2__Impl
+	rule__NetworkInfrastructure__Group_12__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group_12__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getParamsAssignment_12_2()); }
+(rule__NetworkInfrastructure__ParamsAssignment_12_2)
+{ after(grammarAccess.getNetworkInfrastructureAccess().getParamsAssignment_12_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group_12__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group_12__3__Impl
+	rule__NetworkInfrastructure__Group_12__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group_12__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getGroup_12_3()); }
+(rule__NetworkInfrastructure__Group_12_3__0)*
+{ after(grammarAccess.getNetworkInfrastructureAccess().getGroup_12_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group_12__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group_12__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group_12__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getRightCurlyBracketKeyword_12_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getRightCurlyBracketKeyword_12_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkInfrastructure__Group_12_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group_12_3__0__Impl
+	rule__NetworkInfrastructure__Group_12_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group_12_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getCommaKeyword_12_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getCommaKeyword_12_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group_12_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group_12_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group_12_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getParamsAssignment_12_3_1()); }
+(rule__NetworkInfrastructure__ParamsAssignment_12_3_1)
+{ after(grammarAccess.getNetworkInfrastructureAccess().getParamsAssignment_12_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__0__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getVirtualNetworkInterfacePerfSpecAction_0()); }
+(
+
+)
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getVirtualNetworkInterfacePerfSpecAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__1__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getVirtualNetworkInterfacePerfSpecKeyword_1()); }
+
+	'VirtualNetworkInterfacePerfSpec' 
+
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getVirtualNetworkInterfacePerfSpecKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__2__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__3__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getIsUpKeyword_3()); }
+
+	'isUp' 
+
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getIsUpKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__4__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getIsUpAssignment_4()); }
+(rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_4)
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getIsUpAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__5__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getPacketProcessingTimeKeyword_5()); }
+
+	'packetProcessingTime' 
+
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getPacketProcessingTimeKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__6__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getPacketProcessingTimeAssignment_6()); }
+(rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6)
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getPacketProcessingTimeAssignment_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__7__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getMTUKeyword_7()); }
+
+	'MTU' 
+
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getMTUKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__8__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getMTUAssignment_8()); }
+(rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_8)
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getMTUAssignment_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__9__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getInterfaceSpeedKeyword_9()); }
+
+	'interfaceSpeed' 
+
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getInterfaceSpeedKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__10__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getInterfaceSpeedAssignment_10()); }
+(rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10)
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getInterfaceSpeedAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__11__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getRightCurlyBracketKeyword_11()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getRightCurlyBracketKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__0__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPhysicalNetworkInterfacePerfSpecAction_0()); }
+(
+
+)
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPhysicalNetworkInterfacePerfSpecAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__1__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPhysicalNetworkInterfacePerfSpecKeyword_1()); }
+
+	'PhysicalNetworkInterfacePerfSpec' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPhysicalNetworkInterfacePerfSpecKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__2__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__3__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getIsUpKeyword_3()); }
+
+	'isUp' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getIsUpKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__4__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getIsUpAssignment_4()); }
+(rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_4)
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getIsUpAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__5__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPacketProcessingTimeKeyword_5()); }
+
+	'packetProcessingTime' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPacketProcessingTimeKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__6__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPacketProcessingTimeAssignment_6()); }
+(rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6)
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPacketProcessingTimeAssignment_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__7__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getMTUKeyword_7()); }
+
+	'MTU' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getMTUKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__8__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getMTUAssignment_8()); }
+(rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_8)
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getMTUAssignment_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__9__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getInterfaceSpeedKeyword_9()); }
+
+	'interfaceSpeed' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getInterfaceSpeedKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__10__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getInterfaceSpeedAssignment_10()); }
+(rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10)
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getInterfaceSpeedAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__11__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getRightCurlyBracketKeyword_11()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getRightCurlyBracketKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualLinkPerfSpec__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLinkPerfSpec__Group__0__Impl
+	rule__VirtualLinkPerfSpec__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getVirtualLinkPerfSpecAction_0()); }
+(
+
+)
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getVirtualLinkPerfSpecAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLinkPerfSpec__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLinkPerfSpec__Group__1__Impl
+	rule__VirtualLinkPerfSpec__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getVirtualLinkPerfSpecKeyword_1()); }
+
+	'VirtualLinkPerfSpec' 
+
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getVirtualLinkPerfSpecKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLinkPerfSpec__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLinkPerfSpec__Group__2__Impl
+	rule__VirtualLinkPerfSpec__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLinkPerfSpec__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLinkPerfSpec__Group__3__Impl
+	rule__VirtualLinkPerfSpec__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getPropagationDelayKeyword_3()); }
+
+	'propagationDelay' 
+
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getPropagationDelayKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLinkPerfSpec__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLinkPerfSpec__Group__4__Impl
+	rule__VirtualLinkPerfSpec__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getPropagationDelayAssignment_4()); }
+(rule__VirtualLinkPerfSpec__PropagationDelayAssignment_4)
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getPropagationDelayAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLinkPerfSpec__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLinkPerfSpec__Group__5__Impl
+	rule__VirtualLinkPerfSpec__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getGroup_5()); }
+(rule__VirtualLinkPerfSpec__Group_5__0)?
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLinkPerfSpec__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLinkPerfSpec__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualLinkPerfSpec__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLinkPerfSpec__Group_5__0__Impl
+	rule__VirtualLinkPerfSpec__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getMaxSupportedBandwidthKeyword_5_0()); }
+
+	'maxSupportedBandwidth' 
+
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getMaxSupportedBandwidthKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLinkPerfSpec__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLinkPerfSpec__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getMaxSupportedBandwidthAssignment_5_1()); }
+(rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1)
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getMaxSupportedBandwidthAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PhysicalLinkPerfSpec__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLinkPerfSpec__Group__0__Impl
+	rule__PhysicalLinkPerfSpec__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getPhysicalLinkPerfSpecAction_0()); }
+(
+
+)
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getPhysicalLinkPerfSpecAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLinkPerfSpec__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLinkPerfSpec__Group__1__Impl
+	rule__PhysicalLinkPerfSpec__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getPhysicalLinkPerfSpecKeyword_1()); }
+
+	'PhysicalLinkPerfSpec' 
+
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getPhysicalLinkPerfSpecKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLinkPerfSpec__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLinkPerfSpec__Group__2__Impl
+	rule__PhysicalLinkPerfSpec__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLinkPerfSpec__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLinkPerfSpec__Group__3__Impl
+	rule__PhysicalLinkPerfSpec__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getPropagationDelayKeyword_3()); }
+
+	'propagationDelay' 
+
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getPropagationDelayKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLinkPerfSpec__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLinkPerfSpec__Group__4__Impl
+	rule__PhysicalLinkPerfSpec__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getPropagationDelayAssignment_4()); }
+(rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_4)
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getPropagationDelayAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLinkPerfSpec__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLinkPerfSpec__Group__5__Impl
+	rule__PhysicalLinkPerfSpec__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getGroup_5()); }
+(rule__PhysicalLinkPerfSpec__Group_5__0)?
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLinkPerfSpec__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLinkPerfSpec__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalLinkPerfSpec__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLinkPerfSpec__Group_5__0__Impl
+	rule__PhysicalLinkPerfSpec__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getMaxSupportedBandwidthKeyword_5_0()); }
+
+	'maxSupportedBandwidth' 
+
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getMaxSupportedBandwidthKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLinkPerfSpec__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLinkPerfSpec__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getMaxSupportedBandwidthAssignment_5_1()); }
+(rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1)
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getMaxSupportedBandwidthAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__IntermediateNodePerfSpec__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IntermediateNodePerfSpec__Group__0__Impl
+	rule__IntermediateNodePerfSpec__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntermediateNodePerfSpec__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getIntermediateNodePerfSpecKeyword_0()); }
+
+	'IntermediateNodePerfSpec' 
+
+{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getIntermediateNodePerfSpecKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IntermediateNodePerfSpec__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IntermediateNodePerfSpec__Group__1__Impl
+	rule__IntermediateNodePerfSpec__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntermediateNodePerfSpec__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IntermediateNodePerfSpec__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IntermediateNodePerfSpec__Group__2__Impl
+	rule__IntermediateNodePerfSpec__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntermediateNodePerfSpec__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getDataplaneKeyword_2()); }
+
+	'dataplane' 
+
+{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getDataplaneKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IntermediateNodePerfSpec__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IntermediateNodePerfSpec__Group__3__Impl
+	rule__IntermediateNodePerfSpec__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntermediateNodePerfSpec__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getDataplaneAssignment_3()); }
+(rule__IntermediateNodePerfSpec__DataplaneAssignment_3)
+{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getDataplaneAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IntermediateNodePerfSpec__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IntermediateNodePerfSpec__Group__4__Impl
+	rule__IntermediateNodePerfSpec__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntermediateNodePerfSpec__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getControlplaneKeyword_4()); }
+
+	'controlplane' 
+
+{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getControlplaneKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IntermediateNodePerfSpec__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IntermediateNodePerfSpec__Group__5__Impl
+	rule__IntermediateNodePerfSpec__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntermediateNodePerfSpec__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getControlplaneAssignment_5()); }
+(rule__IntermediateNodePerfSpec__ControlplaneAssignment_5)
+{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getControlplaneAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IntermediateNodePerfSpec__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IntermediateNodePerfSpec__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntermediateNodePerfSpec__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ControlPlanePerfSpec__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ControlPlanePerfSpec__Group__0__Impl
+	rule__ControlPlanePerfSpec__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getDataPlanePerfSpecKeyword_0()); }
+
+	'DataPlanePerfSpec' 
+
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getDataPlanePerfSpecKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ControlPlanePerfSpec__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ControlPlanePerfSpec__Group__1__Impl
+	rule__ControlPlanePerfSpec__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ControlPlanePerfSpec__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ControlPlanePerfSpec__Group__2__Impl
+	rule__ControlPlanePerfSpec__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getProcessingLatencyKeyword_2()); }
+
+	'processingLatency' 
+
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getProcessingLatencyKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ControlPlanePerfSpec__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ControlPlanePerfSpec__Group__3__Impl
+	rule__ControlPlanePerfSpec__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getProcessingLatencyAssignment_3()); }
+(rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_3)
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getProcessingLatencyAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ControlPlanePerfSpec__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ControlPlanePerfSpec__Group__4__Impl
+	rule__ControlPlanePerfSpec__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getProcessingBandwidthReqPSKeyword_4()); }
+
+	'processingBandwidthReqPS' 
+
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getProcessingBandwidthReqPSKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ControlPlanePerfSpec__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ControlPlanePerfSpec__Group__5__Impl
+	rule__ControlPlanePerfSpec__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getProcessingBandwidthReqPSAssignment_5()); }
+(rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_5)
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getProcessingBandwidthReqPSAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ControlPlanePerfSpec__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ControlPlanePerfSpec__Group__6__Impl
+	rule__ControlPlanePerfSpec__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getPacketProcessingTimeKeyword_6()); }
+
+	'packetProcessingTime' 
+
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getPacketProcessingTimeKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ControlPlanePerfSpec__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ControlPlanePerfSpec__Group__7__Impl
+	rule__ControlPlanePerfSpec__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getPacketProcessingTimeAssignment_7()); }
+(rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_7)
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getPacketProcessingTimeAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ControlPlanePerfSpec__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ControlPlanePerfSpec__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getRightCurlyBracketKeyword_8()); }
+
+	'}' 
+
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getRightCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataPlanePerfSpec__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__0__Impl
+	rule__DataPlanePerfSpec__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getDataPlanePerfSpecKeyword_0()); }
+
+	'DataPlanePerfSpec' 
+
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getDataPlanePerfSpecKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__1__Impl
+	rule__DataPlanePerfSpec__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__2__Impl
+	rule__DataPlanePerfSpec__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingLatencyKeyword_2()); }
+
+	'forwardingLatency' 
+
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingLatencyKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__3__Impl
+	rule__DataPlanePerfSpec__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingLatencyAssignment_3()); }
+(rule__DataPlanePerfSpec__ForwardingLatencyAssignment_3)
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingLatencyAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__4__Impl
+	rule__DataPlanePerfSpec__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthPPSKeyword_4()); }
+
+	'forwardingBandwidthPPS' 
+
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthPPSKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__5__Impl
+	rule__DataPlanePerfSpec__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthPPSAssignment_5()); }
+(rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_5)
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthPPSAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__6__Impl
+	rule__DataPlanePerfSpec__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthBPSKeyword_6()); }
+
+	'forwardingBandwidthBPS' 
+
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthBPSKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__7__Impl
+	rule__DataPlanePerfSpec__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthBPSAssignment_7()); }
+(rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_7)
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthBPSAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__8__Impl
+	rule__DataPlanePerfSpec__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getPacketProcessingTimeKeyword_8()); }
+
+	'packetProcessingTime' 
+
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getPacketProcessingTimeKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__9__Impl
+	rule__DataPlanePerfSpec__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getPacketProcessingTimeAssignment_9()); }
+(rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_9)
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getPacketProcessingTimeAssignment_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__10__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getRightCurlyBracketKeyword_10()); }
+
+	'}' 
+
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getRightCurlyBracketKeyword_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__EndNodePerfSpec__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group__0__Impl
+	rule__EndNodePerfSpec__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getEndNodePerfSpecKeyword_0()); }
+
+	'EndNodePerfSpec' 
+
+{ after(grammarAccess.getEndNodePerfSpecAccess().getEndNodePerfSpecKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EndNodePerfSpec__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group__1__Impl
+	rule__EndNodePerfSpec__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getEndNodePerfSpecAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EndNodePerfSpec__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group__2__Impl
+	rule__EndNodePerfSpec__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getSoftwareLayersDelayKeyword_2()); }
+
+	'softwareLayersDelay' 
+
+{ after(grammarAccess.getEndNodePerfSpecAccess().getSoftwareLayersDelayKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EndNodePerfSpec__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group__3__Impl
+	rule__EndNodePerfSpec__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getSoftwareLayersDelayAssignment_3()); }
+(rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_3)
+{ after(grammarAccess.getEndNodePerfSpecAccess().getSoftwareLayersDelayAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EndNodePerfSpec__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group__4__Impl
+	rule__EndNodePerfSpec__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getGroup_4()); }
+(rule__EndNodePerfSpec__Group_4__0)?
+{ after(grammarAccess.getEndNodePerfSpecAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EndNodePerfSpec__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group__5__Impl
+	rule__EndNodePerfSpec__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getGroup_5()); }
+(rule__EndNodePerfSpec__Group_5__0)?
+{ after(grammarAccess.getEndNodePerfSpecAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EndNodePerfSpec__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getEndNodePerfSpecAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__EndNodePerfSpec__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group_4__0__Impl
+	rule__EndNodePerfSpec__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getDataplaneKeyword_4_0()); }
+
+	'dataplane' 
+
+{ after(grammarAccess.getEndNodePerfSpecAccess().getDataplaneKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EndNodePerfSpec__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getDataplaneAssignment_4_1()); }
+(rule__EndNodePerfSpec__DataplaneAssignment_4_1)
+{ after(grammarAccess.getEndNodePerfSpecAccess().getDataplaneAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EndNodePerfSpec__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group_5__0__Impl
+	rule__EndNodePerfSpec__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getControlplaneKeyword_5_0()); }
+
+	'controlplane' 
+
+{ after(grammarAccess.getEndNodePerfSpecAccess().getControlplaneKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EndNodePerfSpec__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getControlplaneAssignment_5_1()); }
+(rule__EndNodePerfSpec__ControlplaneAssignment_5_1)
+{ after(grammarAccess.getEndNodePerfSpecAccess().getControlplaneAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NetworkTraffic__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group__0__Impl
+	rule__NetworkTraffic__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getNetworkTrafficAction_0()); }
+(
+
+)
+{ after(grammarAccess.getNetworkTrafficAccess().getNetworkTrafficAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group__1__Impl
+	rule__NetworkTraffic__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getNetworkTrafficKeyword_1()); }
+
+	'NetworkTraffic' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getNetworkTrafficKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group__2__Impl
+	rule__NetworkTraffic__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group__3__Impl
+	rule__NetworkTraffic__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getGroup_3()); }
+(rule__NetworkTraffic__Group_3__0)?
+{ after(grammarAccess.getNetworkTrafficAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group__4__Impl
+	rule__NetworkTraffic__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getGroup_4()); }
+(rule__NetworkTraffic__Group_4__0)?
+{ after(grammarAccess.getNetworkTrafficAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkTraffic__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_3__0__Impl
+	rule__NetworkTraffic__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getFlowsKeyword_3_0()); }
+
+	'flows' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getFlowsKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_3__1__Impl
+	rule__NetworkTraffic__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getLeftCurlyBracketKeyword_3_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getLeftCurlyBracketKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_3__2__Impl
+	rule__NetworkTraffic__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getFlowsAssignment_3_2()); }
+(rule__NetworkTraffic__FlowsAssignment_3_2)
+{ after(grammarAccess.getNetworkTrafficAccess().getFlowsAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_3__3__Impl
+	rule__NetworkTraffic__Group_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getGroup_3_3()); }
+(rule__NetworkTraffic__Group_3_3__0)*
+{ after(grammarAccess.getNetworkTrafficAccess().getGroup_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getRightCurlyBracketKeyword_3_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getRightCurlyBracketKeyword_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkTraffic__Group_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_3_3__0__Impl
+	rule__NetworkTraffic__Group_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getCommaKeyword_3_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getCommaKeyword_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getFlowsAssignment_3_3_1()); }
+(rule__NetworkTraffic__FlowsAssignment_3_3_1)
+{ after(grammarAccess.getNetworkTrafficAccess().getFlowsAssignment_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NetworkTraffic__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_4__0__Impl
+	rule__NetworkTraffic__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getSoftwareKeyword_4_0()); }
+
+	'software' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getSoftwareKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_4__1__Impl
+	rule__NetworkTraffic__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getLeftCurlyBracketKeyword_4_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getLeftCurlyBracketKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_4__2__Impl
+	rule__NetworkTraffic__Group_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getSoftwareAssignment_4_2()); }
+(rule__NetworkTraffic__SoftwareAssignment_4_2)
+{ after(grammarAccess.getNetworkTrafficAccess().getSoftwareAssignment_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_4__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_4__3__Impl
+	rule__NetworkTraffic__Group_4__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_4__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getGroup_4_3()); }
+(rule__NetworkTraffic__Group_4_3__0)*
+{ after(grammarAccess.getNetworkTrafficAccess().getGroup_4_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_4__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_4__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_4__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getRightCurlyBracketKeyword_4_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getRightCurlyBracketKeyword_4_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkTraffic__Group_4_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_4_3__0__Impl
+	rule__NetworkTraffic__Group_4_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_4_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getCommaKeyword_4_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getCommaKeyword_4_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_4_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_4_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_4_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getSoftwareAssignment_4_3_1()); }
+(rule__NetworkTraffic__SoftwareAssignment_4_3_1)
+{ after(grammarAccess.getNetworkTrafficAccess().getSoftwareAssignment_4_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NetworkStructure__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group__0__Impl
+	rule__NetworkStructure__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getNetworkStructureAction_0()); }
+(
+
+)
+{ after(grammarAccess.getNetworkStructureAccess().getNetworkStructureAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group__1__Impl
+	rule__NetworkStructure__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getNetworkStructureKeyword_1()); }
+
+	'NetworkStructure' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getNetworkStructureKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group__2__Impl
+	rule__NetworkStructure__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group__3__Impl
+	rule__NetworkStructure__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getGroup_3()); }
+(rule__NetworkStructure__Group_3__0)?
+{ after(grammarAccess.getNetworkStructureAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group__4__Impl
+	rule__NetworkStructure__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getGroup_4()); }
+(rule__NetworkStructure__Group_4__0)?
+{ after(grammarAccess.getNetworkStructureAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkStructure__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_3__0__Impl
+	rule__NetworkStructure__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getNodesKeyword_3_0()); }
+
+	'nodes' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getNodesKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_3__1__Impl
+	rule__NetworkStructure__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getLeftCurlyBracketKeyword_3_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getLeftCurlyBracketKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_3__2__Impl
+	rule__NetworkStructure__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getNodesAssignment_3_2()); }
+(rule__NetworkStructure__NodesAssignment_3_2)
+{ after(grammarAccess.getNetworkStructureAccess().getNodesAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_3__3__Impl
+	rule__NetworkStructure__Group_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getGroup_3_3()); }
+(rule__NetworkStructure__Group_3_3__0)*
+{ after(grammarAccess.getNetworkStructureAccess().getGroup_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getRightCurlyBracketKeyword_3_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getRightCurlyBracketKeyword_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkStructure__Group_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_3_3__0__Impl
+	rule__NetworkStructure__Group_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getCommaKeyword_3_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getCommaKeyword_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getNodesAssignment_3_3_1()); }
+(rule__NetworkStructure__NodesAssignment_3_3_1)
+{ after(grammarAccess.getNetworkStructureAccess().getNodesAssignment_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NetworkStructure__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_4__0__Impl
+	rule__NetworkStructure__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getLinksKeyword_4_0()); }
+
+	'links' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getLinksKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_4__1__Impl
+	rule__NetworkStructure__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getLeftCurlyBracketKeyword_4_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getLeftCurlyBracketKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_4__2__Impl
+	rule__NetworkStructure__Group_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getLinksAssignment_4_2()); }
+(rule__NetworkStructure__LinksAssignment_4_2)
+{ after(grammarAccess.getNetworkStructureAccess().getLinksAssignment_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_4__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_4__3__Impl
+	rule__NetworkStructure__Group_4__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_4__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getGroup_4_3()); }
+(rule__NetworkStructure__Group_4_3__0)*
+{ after(grammarAccess.getNetworkStructureAccess().getGroup_4_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_4__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_4__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_4__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getRightCurlyBracketKeyword_4_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getRightCurlyBracketKeyword_4_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkStructure__Group_4_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_4_3__0__Impl
+	rule__NetworkStructure__Group_4_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_4_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getCommaKeyword_4_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getCommaKeyword_4_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_4_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_4_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_4_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getLinksAssignment_4_3_1()); }
+(rule__NetworkStructure__LinksAssignment_4_3_1)
+{ after(grammarAccess.getNetworkStructureAccess().getLinksAssignment_4_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NetworkConfiguration__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkConfiguration__Group__0__Impl
+	rule__NetworkConfiguration__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkConfiguration__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getNetworkConfigurationKeyword_0()); }
+
+	'NetworkConfiguration' 
+
+{ after(grammarAccess.getNetworkConfigurationAccess().getNetworkConfigurationKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkConfiguration__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkConfiguration__Group__1__Impl
+	rule__NetworkConfiguration__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkConfiguration__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkConfigurationAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkConfiguration__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkConfiguration__Group__2__Impl
+	rule__NetworkConfiguration__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkConfiguration__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getProtocolsAndStacksKeyword_2()); }
+
+	'protocolsAndStacks' 
+
+{ after(grammarAccess.getNetworkConfigurationAccess().getProtocolsAndStacksKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkConfiguration__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkConfiguration__Group__3__Impl
+	rule__NetworkConfiguration__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkConfiguration__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getProtocolsAndStacksAssignment_3()); }
+(rule__NetworkConfiguration__ProtocolsAndStacksAssignment_3)
+{ after(grammarAccess.getNetworkConfigurationAccess().getProtocolsAndStacksAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkConfiguration__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkConfiguration__Group__4__Impl
+	rule__NetworkConfiguration__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkConfiguration__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getRoutesKeyword_4()); }
+
+	'routes' 
+
+{ after(grammarAccess.getNetworkConfigurationAccess().getRoutesKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkConfiguration__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkConfiguration__Group__5__Impl
+	rule__NetworkConfiguration__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkConfiguration__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getRoutesAssignment_5()); }
+(rule__NetworkConfiguration__RoutesAssignment_5)
+{ after(grammarAccess.getNetworkConfigurationAccess().getRoutesAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkConfiguration__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkConfiguration__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkConfiguration__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkConfigurationAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ExperimentParam__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExperimentParam__Group__0__Impl
+	rule__ExperimentParam__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExperimentParam__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExperimentParamAccess().getExperimentParamKeyword_0()); }
+
+	'ExperimentParam' 
+
+{ after(grammarAccess.getExperimentParamAccess().getExperimentParamKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExperimentParam__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExperimentParam__Group__1__Impl
+	rule__ExperimentParam__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExperimentParam__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExperimentParamAccess().getNameAssignment_1()); }
+(rule__ExperimentParam__NameAssignment_1)
+{ after(grammarAccess.getExperimentParamAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExperimentParam__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExperimentParam__Group__2__Impl
+	rule__ExperimentParam__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExperimentParam__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExperimentParamAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getExperimentParamAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExperimentParam__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExperimentParam__Group__3__Impl
+	rule__ExperimentParam__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExperimentParam__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExperimentParamAccess().getValueKeyword_3()); }
+
+	'value' 
+
+{ after(grammarAccess.getExperimentParamAccess().getValueKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExperimentParam__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExperimentParam__Group__4__Impl
+	rule__ExperimentParam__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExperimentParam__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExperimentParamAccess().getValueAssignment_4()); }
+(rule__ExperimentParam__ValueAssignment_4)
+{ after(grammarAccess.getExperimentParamAccess().getValueAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExperimentParam__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExperimentParam__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExperimentParam__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExperimentParamAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getExperimentParamAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__SoftwareComponent__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__0__Impl
+	rule__SoftwareComponent__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getSoftwareComponentKeyword_0()); }
+
+	'SoftwareComponent' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getSoftwareComponentKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__1__Impl
+	rule__SoftwareComponent__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getIdAssignment_1()); }
+(rule__SoftwareComponent__IdAssignment_1)
+{ after(grammarAccess.getSoftwareComponentAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__2__Impl
+	rule__SoftwareComponent__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__3__Impl
+	rule__SoftwareComponent__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__4__Impl
+	rule__SoftwareComponent__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getNameAssignment_4()); }
+(rule__SoftwareComponent__NameAssignment_4)
+{ after(grammarAccess.getSoftwareComponentAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__5__Impl
+	rule__SoftwareComponent__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getGroup_5()); }
+(rule__SoftwareComponent__Group_5__0)?
+{ after(grammarAccess.getSoftwareComponentAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__6__Impl
+	rule__SoftwareComponent__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getDeployedOnKeyword_6()); }
+
+	'deployedOn' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getDeployedOnKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__7__Impl
+	rule__SoftwareComponent__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getDeployedOnAssignment_7()); }
+(rule__SoftwareComponent__DeployedOnAssignment_7)
+{ after(grammarAccess.getSoftwareComponentAccess().getDeployedOnAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__8__Impl
+	rule__SoftwareComponent__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getGroup_8()); }
+(rule__SoftwareComponent__Group_8__0)?
+{ after(grammarAccess.getSoftwareComponentAccess().getGroup_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__9__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getRightCurlyBracketKeyword_9()); }
+
+	'}' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getRightCurlyBracketKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__SoftwareComponent__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_5__0__Impl
+	rule__SoftwareComponent__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_5__1__Impl
+	rule__SoftwareComponent__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_5__2__Impl
+	rule__SoftwareComponent__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__SoftwareComponent__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_5__3__Impl
+	rule__SoftwareComponent__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getGroup_5_3()); }
+(rule__SoftwareComponent__Group_5_3__0)*
+{ after(grammarAccess.getSoftwareComponentAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__SoftwareComponent__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_5_3__0__Impl
+	rule__SoftwareComponent__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__SoftwareComponent__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__SoftwareComponent__Group_8__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_8__0__Impl
+	rule__SoftwareComponent__Group_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_8__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesKeyword_8_0()); }
+
+	'trafficSources' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesKeyword_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_8__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_8__1__Impl
+	rule__SoftwareComponent__Group_8__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_8__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getLeftCurlyBracketKeyword_8_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getLeftCurlyBracketKeyword_8_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_8__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_8__2__Impl
+	rule__SoftwareComponent__Group_8__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_8__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesAssignment_8_2()); }
+(rule__SoftwareComponent__TrafficSourcesAssignment_8_2)
+{ after(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesAssignment_8_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_8__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_8__3__Impl
+	rule__SoftwareComponent__Group_8__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_8__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getGroup_8_3()); }
+(rule__SoftwareComponent__Group_8_3__0)*
+{ after(grammarAccess.getSoftwareComponentAccess().getGroup_8_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_8__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_8__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_8__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getRightCurlyBracketKeyword_8_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getRightCurlyBracketKeyword_8_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__SoftwareComponent__Group_8_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_8_3__0__Impl
+	rule__SoftwareComponent__Group_8_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_8_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getCommaKeyword_8_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getCommaKeyword_8_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_8_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_8_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_8_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesAssignment_8_3_1()); }
+(rule__SoftwareComponent__TrafficSourcesAssignment_8_3_1)
+{ after(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesAssignment_8_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EntityAddress__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group__0__Impl
+	rule__EntityAddress__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getEntityAddressAction_0()); }
+(
+
+)
+{ after(grammarAccess.getEntityAddressAccess().getEntityAddressAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityAddress__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group__1__Impl
+	rule__EntityAddress__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getEntityAddressKeyword_1()); }
+
+	'EntityAddress' 
+
+{ after(grammarAccess.getEntityAddressAccess().getEntityAddressKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityAddress__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group__2__Impl
+	rule__EntityAddress__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getEntityAddressAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityAddress__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group__3__Impl
+	rule__EntityAddress__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getGroup_3()); }
+(rule__EntityAddress__Group_3__0)?
+{ after(grammarAccess.getEntityAddressAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityAddress__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group__4__Impl
+	rule__EntityAddress__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getGroup_4()); }
+(rule__EntityAddress__Group_4__0)?
+{ after(grammarAccess.getEntityAddressAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityAddress__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getEntityAddressAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__EntityAddress__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group_3__0__Impl
+	rule__EntityAddress__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getAddressKeyword_3_0()); }
+
+	'address' 
+
+{ after(grammarAccess.getEntityAddressAccess().getAddressKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityAddress__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getAddressAssignment_3_1()); }
+(rule__EntityAddress__AddressAssignment_3_1)
+{ after(grammarAccess.getEntityAddressAccess().getAddressAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EntityAddress__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group_4__0__Impl
+	rule__EntityAddress__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getAddressGivenByKeyword_4_0()); }
+
+	'addressGivenBy' 
+
+{ after(grammarAccess.getEntityAddressAccess().getAddressGivenByKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityAddress__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getAddressGivenByAssignment_4_1()); }
+(rule__EntityAddress__AddressGivenByAssignment_4_1)
+{ after(grammarAccess.getEntityAddressAccess().getAddressGivenByAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ONOFFFlow__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__0__Impl
+	rule__ONOFFFlow__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getStartStateAssignment_0()); }
+(rule__ONOFFFlow__StartStateAssignment_0)
+{ after(grammarAccess.getONOFFFlowAccess().getStartStateAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__1__Impl
+	rule__ONOFFFlow__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getONOFFFlowKeyword_1()); }
+
+	'ONOFFFlow' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getONOFFFlowKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__2__Impl
+	rule__ONOFFFlow__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getIdAssignment_2()); }
+(rule__ONOFFFlow__IdAssignment_2)
+{ after(grammarAccess.getONOFFFlowAccess().getIdAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__3__Impl
+	rule__ONOFFFlow__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getLeftCurlyBracketKeyword_3()); }
+
+	'{' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__4__Impl
+	rule__ONOFFFlow__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getNameKeyword_4()); }
+
+	'name' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getNameKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__5__Impl
+	rule__ONOFFFlow__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getNameAssignment_5()); }
+(rule__ONOFFFlow__NameAssignment_5)
+{ after(grammarAccess.getONOFFFlowAccess().getNameAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__6__Impl
+	rule__ONOFFFlow__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getGroup_6()); }
+(rule__ONOFFFlow__Group_6__0)?
+{ after(grammarAccess.getONOFFFlowAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__7__Impl
+	rule__ONOFFFlow__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getGroup_7()); }
+(rule__ONOFFFlow__Group_7__0)?
+{ after(grammarAccess.getONOFFFlowAccess().getGroup_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__8__Impl
+	rule__ONOFFFlow__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getGroup_8()); }
+(rule__ONOFFFlow__Group_8__0)?
+{ after(grammarAccess.getONOFFFlowAccess().getGroup_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__9__Impl
+	rule__ONOFFFlow__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getGroup_9()); }
+(rule__ONOFFFlow__Group_9__0)?
+{ after(grammarAccess.getONOFFFlowAccess().getGroup_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__10__Impl
+	rule__ONOFFFlow__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getONstateIATKeyword_10()); }
+
+	'ONstateIAT' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getONstateIATKeyword_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__11__Impl
+	rule__ONOFFFlow__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getONstateIATAssignment_11()); }
+(rule__ONOFFFlow__ONstateIATAssignment_11)
+{ after(grammarAccess.getONOFFFlowAccess().getONstateIATAssignment_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__12__Impl
+	rule__ONOFFFlow__Group__13
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getONstateDurationKeyword_12()); }
+
+	'ONstateDuration' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getONstateDurationKeyword_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__13
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__13__Impl
+	rule__ONOFFFlow__Group__14
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__13__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getONstateDurationAssignment_13()); }
+(rule__ONOFFFlow__ONstateDurationAssignment_13)
+{ after(grammarAccess.getONOFFFlowAccess().getONstateDurationAssignment_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__14
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__14__Impl
+	rule__ONOFFFlow__Group__15
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__14__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getOFFstateDurationKeyword_14()); }
+
+	'OFFstateDuration' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getOFFstateDurationKeyword_14()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__15
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__15__Impl
+	rule__ONOFFFlow__Group__16
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__15__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getOFFstateDurationAssignment_15()); }
+(rule__ONOFFFlow__OFFstateDurationAssignment_15)
+{ after(grammarAccess.getONOFFFlowAccess().getOFFstateDurationAssignment_15()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__16
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__16__Impl
+	rule__ONOFFFlow__Group__17
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__16__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getPacketLengthKeyword_16()); }
+
+	'packetLength' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getPacketLengthKeyword_16()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__17
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__17__Impl
+	rule__ONOFFFlow__Group__18
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__17__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getPacketLengthAssignment_17()); }
+(rule__ONOFFFlow__PacketLengthAssignment_17)
+{ after(grammarAccess.getONOFFFlowAccess().getPacketLengthAssignment_17()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__18
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__18__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__18__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getRightCurlyBracketKeyword_18()); }
+
+	'}' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getRightCurlyBracketKeyword_18()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ONOFFFlow__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_6__0__Impl
+	rule__ONOFFFlow__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getAlternativeNamesKeyword_6_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getAlternativeNamesKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_6__1__Impl
+	rule__ONOFFFlow__Group_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getLeftCurlyBracketKeyword_6_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getLeftCurlyBracketKeyword_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_6__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_6__2__Impl
+	rule__ONOFFFlow__Group_6__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_6__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getAlternativeNamesAssignment_6_2()); }
+(rule__ONOFFFlow__AlternativeNamesAssignment_6_2)
+{ after(grammarAccess.getONOFFFlowAccess().getAlternativeNamesAssignment_6_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_6__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_6__3__Impl
+	rule__ONOFFFlow__Group_6__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_6__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getGroup_6_3()); }
+(rule__ONOFFFlow__Group_6_3__0)*
+{ after(grammarAccess.getONOFFFlowAccess().getGroup_6_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_6__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_6__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_6__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getRightCurlyBracketKeyword_6_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getRightCurlyBracketKeyword_6_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ONOFFFlow__Group_6_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_6_3__0__Impl
+	rule__ONOFFFlow__Group_6_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_6_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getCommaKeyword_6_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getCommaKeyword_6_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_6_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_6_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_6_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getAlternativeNamesAssignment_6_3_1()); }
+(rule__ONOFFFlow__AlternativeNamesAssignment_6_3_1)
+{ after(grammarAccess.getONOFFFlowAccess().getAlternativeNamesAssignment_6_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ONOFFFlow__Group_7__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_7__0__Impl
+	rule__ONOFFFlow__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_7__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentKeyword_7_0()); }
+
+	'destinationSoftwareComponent' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentKeyword_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_7__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_7__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_7__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentAssignment_7_1()); }
+(rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_1)
+{ after(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentAssignment_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ONOFFFlow__Group_8__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_8__0__Impl
+	rule__ONOFFFlow__Group_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_8__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentKeyword_8_0()); }
+
+	'sourceSoftwareComponent' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentKeyword_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_8__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_8__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_8__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentAssignment_8_1()); }
+(rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_1)
+{ after(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentAssignment_8_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ONOFFFlow__Group_9__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_9__0__Impl
+	rule__ONOFFFlow__Group_9__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_9__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getDestinationAddressesKeyword_9_0()); }
+
+	'destinationAddresses' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getDestinationAddressesKeyword_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_9__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_9__1__Impl
+	rule__ONOFFFlow__Group_9__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_9__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getLeftCurlyBracketKeyword_9_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getLeftCurlyBracketKeyword_9_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_9__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_9__2__Impl
+	rule__ONOFFFlow__Group_9__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_9__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getDestinationAddressesAssignment_9_2()); }
+(rule__ONOFFFlow__DestinationAddressesAssignment_9_2)
+{ after(grammarAccess.getONOFFFlowAccess().getDestinationAddressesAssignment_9_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_9__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_9__3__Impl
+	rule__ONOFFFlow__Group_9__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_9__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getGroup_9_3()); }
+(rule__ONOFFFlow__Group_9_3__0)*
+{ after(grammarAccess.getONOFFFlowAccess().getGroup_9_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_9__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_9__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_9__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getRightCurlyBracketKeyword_9_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getRightCurlyBracketKeyword_9_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ONOFFFlow__Group_9_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_9_3__0__Impl
+	rule__ONOFFFlow__Group_9_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_9_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getCommaKeyword_9_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getCommaKeyword_9_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_9_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_9_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_9_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getDestinationAddressesAssignment_9_3_1()); }
+(rule__ONOFFFlow__DestinationAddressesAssignment_9_3_1)
+{ after(grammarAccess.getONOFFFlowAccess().getDestinationAddressesAssignment_9_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__GenericFlow__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__0__Impl
+	rule__GenericFlow__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getGenericFlowKeyword_0()); }
+
+	'GenericFlow' 
+
+{ after(grammarAccess.getGenericFlowAccess().getGenericFlowKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__1__Impl
+	rule__GenericFlow__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getIdAssignment_1()); }
+(rule__GenericFlow__IdAssignment_1)
+{ after(grammarAccess.getGenericFlowAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__2__Impl
+	rule__GenericFlow__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getGenericFlowAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__3__Impl
+	rule__GenericFlow__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getGenericFlowAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__4__Impl
+	rule__GenericFlow__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getNameAssignment_4()); }
+(rule__GenericFlow__NameAssignment_4)
+{ after(grammarAccess.getGenericFlowAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__5__Impl
+	rule__GenericFlow__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getGroup_5()); }
+(rule__GenericFlow__Group_5__0)?
+{ after(grammarAccess.getGenericFlowAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__6__Impl
+	rule__GenericFlow__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getGroup_6()); }
+(rule__GenericFlow__Group_6__0)?
+{ after(grammarAccess.getGenericFlowAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__7__Impl
+	rule__GenericFlow__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getGroup_7()); }
+(rule__GenericFlow__Group_7__0)?
+{ after(grammarAccess.getGenericFlowAccess().getGroup_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__8__Impl
+	rule__GenericFlow__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getGroup_8()); }
+(rule__GenericFlow__Group_8__0)?
+{ after(grammarAccess.getGenericFlowAccess().getGroup_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__9__Impl
+	rule__GenericFlow__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDataSizeKeyword_9()); }
+
+	'dataSize' 
+
+{ after(grammarAccess.getGenericFlowAccess().getDataSizeKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__10__Impl
+	rule__GenericFlow__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDataSizeAssignment_10()); }
+(rule__GenericFlow__DataSizeAssignment_10)
+{ after(grammarAccess.getGenericFlowAccess().getDataSizeAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__11__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getRightCurlyBracketKeyword_11()); }
+
+	'}' 
+
+{ after(grammarAccess.getGenericFlowAccess().getRightCurlyBracketKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__GenericFlow__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_5__0__Impl
+	rule__GenericFlow__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getGenericFlowAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_5__1__Impl
+	rule__GenericFlow__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getGenericFlowAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_5__2__Impl
+	rule__GenericFlow__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__GenericFlow__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getGenericFlowAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_5__3__Impl
+	rule__GenericFlow__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getGroup_5_3()); }
+(rule__GenericFlow__Group_5_3__0)*
+{ after(grammarAccess.getGenericFlowAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getGenericFlowAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__GenericFlow__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_5_3__0__Impl
+	rule__GenericFlow__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getGenericFlowAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__GenericFlow__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getGenericFlowAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__GenericFlow__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_6__0__Impl
+	rule__GenericFlow__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentKeyword_6_0()); }
+
+	'destinationSoftwareComponent' 
+
+{ after(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_6__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentAssignment_6_1()); }
+(rule__GenericFlow__DestinationSoftwareComponentAssignment_6_1)
+{ after(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentAssignment_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__GenericFlow__Group_7__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_7__0__Impl
+	rule__GenericFlow__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_7__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentKeyword_7_0()); }
+
+	'sourceSoftwareComponent' 
+
+{ after(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentKeyword_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_7__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_7__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_7__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentAssignment_7_1()); }
+(rule__GenericFlow__SourceSoftwareComponentAssignment_7_1)
+{ after(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentAssignment_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__GenericFlow__Group_8__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_8__0__Impl
+	rule__GenericFlow__Group_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_8__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDestinationAddressesKeyword_8_0()); }
+
+	'destinationAddresses' 
+
+{ after(grammarAccess.getGenericFlowAccess().getDestinationAddressesKeyword_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_8__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_8__1__Impl
+	rule__GenericFlow__Group_8__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_8__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getLeftCurlyBracketKeyword_8_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getGenericFlowAccess().getLeftCurlyBracketKeyword_8_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_8__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_8__2__Impl
+	rule__GenericFlow__Group_8__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_8__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDestinationAddressesAssignment_8_2()); }
+(rule__GenericFlow__DestinationAddressesAssignment_8_2)
+{ after(grammarAccess.getGenericFlowAccess().getDestinationAddressesAssignment_8_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_8__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_8__3__Impl
+	rule__GenericFlow__Group_8__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_8__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getGroup_8_3()); }
+(rule__GenericFlow__Group_8_3__0)*
+{ after(grammarAccess.getGenericFlowAccess().getGroup_8_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_8__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_8__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_8__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getRightCurlyBracketKeyword_8_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getGenericFlowAccess().getRightCurlyBracketKeyword_8_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__GenericFlow__Group_8_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_8_3__0__Impl
+	rule__GenericFlow__Group_8_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_8_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getCommaKeyword_8_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getGenericFlowAccess().getCommaKeyword_8_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_8_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_8_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_8_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDestinationAddressesAssignment_8_3_1()); }
+(rule__GenericFlow__DestinationAddressesAssignment_8_3_1)
+{ after(grammarAccess.getGenericFlowAccess().getDestinationAddressesAssignment_8_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NetworkProtocol__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__0__Impl
+	rule__NetworkProtocol__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getDeliveryGuaranteedAssignment_0()); }
+(rule__NetworkProtocol__DeliveryGuaranteedAssignment_0)?
+{ after(grammarAccess.getNetworkProtocolAccess().getDeliveryGuaranteedAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__1__Impl
+	rule__NetworkProtocol__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getNetworkProtocolKeyword_1()); }
+
+	'NetworkProtocol' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getNetworkProtocolKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__2__Impl
+	rule__NetworkProtocol__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getNameAssignment_2()); }
+(rule__NetworkProtocol__NameAssignment_2)
+{ after(grammarAccess.getNetworkProtocolAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__3__Impl
+	rule__NetworkProtocol__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getLeftCurlyBracketKeyword_3()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__4__Impl
+	rule__NetworkProtocol__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getGroup_4()); }
+(rule__NetworkProtocol__Group_4__0)?
+{ after(grammarAccess.getNetworkProtocolAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__5__Impl
+	rule__NetworkProtocol__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getMtuKeyword_5()); }
+
+	'mtu' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getMtuKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__6__Impl
+	rule__NetworkProtocol__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getMtuAssignment_6()); }
+(rule__NetworkProtocol__MtuAssignment_6)
+{ after(grammarAccess.getNetworkProtocolAccess().getMtuAssignment_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__7__Impl
+	rule__NetworkProtocol__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getHeadersLengthKeyword_7()); }
+
+	'headersLength' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getHeadersLengthKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__8__Impl
+	rule__NetworkProtocol__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getHeadersLengthAssignment_8()); }
+(rule__NetworkProtocol__HeadersLengthAssignment_8)
+{ after(grammarAccess.getNetworkProtocolAccess().getHeadersLengthAssignment_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__9__Impl
+	rule__NetworkProtocol__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getDataUnitLengthKeyword_9()); }
+
+	'dataUnitLength' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getDataUnitLengthKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__10__Impl
+	rule__NetworkProtocol__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getDataUnitLengthAssignment_10()); }
+(rule__NetworkProtocol__DataUnitLengthAssignment_10)
+{ after(grammarAccess.getNetworkProtocolAccess().getDataUnitLengthAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__11__Impl
+	rule__NetworkProtocol__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getGroup_11()); }
+(rule__NetworkProtocol__Group_11__0)?
+{ after(grammarAccess.getNetworkProtocolAccess().getGroup_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__12__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getRightCurlyBracketKeyword_12()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getRightCurlyBracketKeyword_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkProtocol__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group_4__0__Impl
+	rule__NetworkProtocol__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesKeyword_4_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group_4__1__Impl
+	rule__NetworkProtocol__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getLeftCurlyBracketKeyword_4_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getLeftCurlyBracketKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group_4__2__Impl
+	rule__NetworkProtocol__Group_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesAssignment_4_2()); }
+(rule__NetworkProtocol__AlternativeNamesAssignment_4_2)
+{ after(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesAssignment_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group_4__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group_4__3__Impl
+	rule__NetworkProtocol__Group_4__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group_4__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getGroup_4_3()); }
+(rule__NetworkProtocol__Group_4_3__0)*
+{ after(grammarAccess.getNetworkProtocolAccess().getGroup_4_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group_4__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group_4__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group_4__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getRightCurlyBracketKeyword_4_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getRightCurlyBracketKeyword_4_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkProtocol__Group_4_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group_4_3__0__Impl
+	rule__NetworkProtocol__Group_4_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group_4_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getCommaKeyword_4_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getCommaKeyword_4_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group_4_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group_4_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group_4_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesAssignment_4_3_1()); }
+(rule__NetworkProtocol__AlternativeNamesAssignment_4_3_1)
+{ after(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesAssignment_4_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NetworkProtocol__Group_11__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group_11__0__Impl
+	rule__NetworkProtocol__Group_11__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group_11__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getConnectionlessKeyword_11_0()); }
+
+	'connectionless' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getConnectionlessKeyword_11_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group_11__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group_11__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group_11__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getConnectionlessAssignment_11_1()); }
+(rule__NetworkProtocol__ConnectionlessAssignment_11_1)
+{ after(grammarAccess.getNetworkProtocolAccess().getConnectionlessAssignment_11_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EInt__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EInt__Group__0__Impl
+	rule__EInt__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EInt__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEIntAccess().getHyphenMinusKeyword_0()); }
+(
+	'-' 
+)?
+{ after(grammarAccess.getEIntAccess().getHyphenMinusKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EInt__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EInt__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EInt__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEIntAccess().getINTTerminalRuleCall_1()); }
+	RULE_INT
+{ after(grammarAccess.getEIntAccess().getINTTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ConstantDoubleVariable__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantDoubleVariable__Group__0__Impl
+	rule__ConstantDoubleVariable__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getConstantDoubleVariableKeyword_0()); }
+
+	'ConstantDoubleVariable' 
+
+{ after(grammarAccess.getConstantDoubleVariableAccess().getConstantDoubleVariableKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantDoubleVariable__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantDoubleVariable__Group__1__Impl
+	rule__ConstantDoubleVariable__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getConstantDoubleVariableAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantDoubleVariable__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantDoubleVariable__Group__2__Impl
+	rule__ConstantDoubleVariable__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getValueKeyword_2()); }
+
+	'value' 
+
+{ after(grammarAccess.getConstantDoubleVariableAccess().getValueKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantDoubleVariable__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantDoubleVariable__Group__3__Impl
+	rule__ConstantDoubleVariable__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getValueAssignment_3()); }
+(rule__ConstantDoubleVariable__ValueAssignment_3)
+{ after(grammarAccess.getConstantDoubleVariableAccess().getValueAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantDoubleVariable__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantDoubleVariable__Group__4__Impl
+	rule__ConstantDoubleVariable__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getGroup_4()); }
+(rule__ConstantDoubleVariable__Group_4__0)?
+{ after(grammarAccess.getConstantDoubleVariableAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantDoubleVariable__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantDoubleVariable__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getConstantDoubleVariableAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ConstantDoubleVariable__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantDoubleVariable__Group_4__0__Impl
+	rule__ConstantDoubleVariable__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getUnitKeyword_4_0()); }
+
+	'unit' 
+
+{ after(grammarAccess.getConstantDoubleVariableAccess().getUnitKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantDoubleVariable__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantDoubleVariable__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getUnitAssignment_4_1()); }
+(rule__ConstantDoubleVariable__UnitAssignment_4_1)
+{ after(grammarAccess.getConstantDoubleVariableAccess().getUnitAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ConstantLongVariable__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantLongVariable__Group__0__Impl
+	rule__ConstantLongVariable__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getConstantLongVariableKeyword_0()); }
+
+	'ConstantLongVariable' 
+
+{ after(grammarAccess.getConstantLongVariableAccess().getConstantLongVariableKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantLongVariable__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantLongVariable__Group__1__Impl
+	rule__ConstantLongVariable__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getConstantLongVariableAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantLongVariable__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantLongVariable__Group__2__Impl
+	rule__ConstantLongVariable__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getValueKeyword_2()); }
+
+	'value' 
+
+{ after(grammarAccess.getConstantLongVariableAccess().getValueKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantLongVariable__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantLongVariable__Group__3__Impl
+	rule__ConstantLongVariable__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getValueAssignment_3()); }
+(rule__ConstantLongVariable__ValueAssignment_3)
+{ after(grammarAccess.getConstantLongVariableAccess().getValueAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantLongVariable__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantLongVariable__Group__4__Impl
+	rule__ConstantLongVariable__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getGroup_4()); }
+(rule__ConstantLongVariable__Group_4__0)?
+{ after(grammarAccess.getConstantLongVariableAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantLongVariable__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantLongVariable__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getConstantLongVariableAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ConstantLongVariable__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantLongVariable__Group_4__0__Impl
+	rule__ConstantLongVariable__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getUnitKeyword_4_0()); }
+
+	'unit' 
+
+{ after(grammarAccess.getConstantLongVariableAccess().getUnitKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantLongVariable__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantLongVariable__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getUnitAssignment_4_1()); }
+(rule__ConstantLongVariable__UnitAssignment_4_1)
+{ after(grammarAccess.getConstantLongVariableAccess().getUnitAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RandomVariable__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RandomVariable__Group__0__Impl
+	rule__RandomVariable__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getRandomVariableKeyword_0()); }
+
+	'RandomVariable' 
+
+{ after(grammarAccess.getRandomVariableAccess().getRandomVariableKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RandomVariable__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RandomVariable__Group__1__Impl
+	rule__RandomVariable__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getRandomVariableAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RandomVariable__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RandomVariable__Group__2__Impl
+	rule__RandomVariable__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getGroup_2()); }
+(rule__RandomVariable__Group_2__0)?
+{ after(grammarAccess.getRandomVariableAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RandomVariable__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RandomVariable__Group__3__Impl
+	rule__RandomVariable__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getCdfKeyword_3()); }
+
+	'cdf' 
+
+{ after(grammarAccess.getRandomVariableAccess().getCdfKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RandomVariable__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RandomVariable__Group__4__Impl
+	rule__RandomVariable__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getCdfAssignment_4()); }
+(rule__RandomVariable__CdfAssignment_4)
+{ after(grammarAccess.getRandomVariableAccess().getCdfAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RandomVariable__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RandomVariable__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getRandomVariableAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__RandomVariable__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RandomVariable__Group_2__0__Impl
+	rule__RandomVariable__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getUnitKeyword_2_0()); }
+
+	'unit' 
+
+{ after(grammarAccess.getRandomVariableAccess().getUnitKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RandomVariable__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RandomVariable__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getUnitAssignment_2_1()); }
+(rule__RandomVariable__UnitAssignment_2_1)
+{ after(grammarAccess.getRandomVariableAccess().getUnitAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ContinuousFunction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group__0__Impl
+	rule__ContinuousFunction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getContinuousFunctionKeyword_0()); }
+
+	'ContinuousFunction' 
+
+{ after(grammarAccess.getContinuousFunctionAccess().getContinuousFunctionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousFunction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group__1__Impl
+	rule__ContinuousFunction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getContinuousFunctionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousFunction__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group__2__Impl
+	rule__ContinuousFunction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getNumArgsKeyword_2()); }
+
+	'numArgs' 
+
+{ after(grammarAccess.getContinuousFunctionAccess().getNumArgsKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousFunction__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group__3__Impl
+	rule__ContinuousFunction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getNumArgsAssignment_3()); }
+(rule__ContinuousFunction__NumArgsAssignment_3)
+{ after(grammarAccess.getContinuousFunctionAccess().getNumArgsAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousFunction__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group__4__Impl
+	rule__ContinuousFunction__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getEquationKeyword_4()); }
+
+	'equation' 
+
+{ after(grammarAccess.getContinuousFunctionAccess().getEquationKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousFunction__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group__5__Impl
+	rule__ContinuousFunction__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getEquationAssignment_5()); }
+(rule__ContinuousFunction__EquationAssignment_5)
+{ after(grammarAccess.getContinuousFunctionAccess().getEquationAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousFunction__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group__6__Impl
+	rule__ContinuousFunction__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getGroup_6()); }
+(rule__ContinuousFunction__Group_6__0)?
+{ after(grammarAccess.getContinuousFunctionAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousFunction__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getRightCurlyBracketKeyword_7()); }
+
+	'}' 
+
+{ after(grammarAccess.getContinuousFunctionAccess().getRightCurlyBracketKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ContinuousFunction__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group_6__0__Impl
+	rule__ContinuousFunction__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getUnitKeyword_6_0()); }
+
+	'unit' 
+
+{ after(grammarAccess.getContinuousFunctionAccess().getUnitKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousFunction__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group_6__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getUnitAssignment_6_1()); }
+(rule__ContinuousFunction__UnitAssignment_6_1)
+{ after(grammarAccess.getContinuousFunctionAccess().getUnitAssignment_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DiscreteFunction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__0__Impl
+	rule__DiscreteFunction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getDiscreteFunctionKeyword_0()); }
+
+	'DiscreteFunction' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getDiscreteFunctionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__1__Impl
+	rule__DiscreteFunction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__2__Impl
+	rule__DiscreteFunction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getNumArgsKeyword_2()); }
+
+	'numArgs' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getNumArgsKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__3__Impl
+	rule__DiscreteFunction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getNumArgsAssignment_3()); }
+(rule__DiscreteFunction__NumArgsAssignment_3)
+{ after(grammarAccess.getDiscreteFunctionAccess().getNumArgsAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__4__Impl
+	rule__DiscreteFunction__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getGroup_4()); }
+(rule__DiscreteFunction__Group_4__0)?
+{ after(grammarAccess.getDiscreteFunctionAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__5__Impl
+	rule__DiscreteFunction__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getXKeyword_5()); }
+
+	'x' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getXKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__6__Impl
+	rule__DiscreteFunction__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getLeftCurlyBracketKeyword_6()); }
+
+	'{' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getLeftCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__7__Impl
+	rule__DiscreteFunction__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getXAssignment_7()); }
+(rule__DiscreteFunction__XAssignment_7)
+{ after(grammarAccess.getDiscreteFunctionAccess().getXAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__8__Impl
+	rule__DiscreteFunction__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getGroup_8()); }
+(rule__DiscreteFunction__Group_8__0)*
+{ after(grammarAccess.getDiscreteFunctionAccess().getGroup_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__9__Impl
+	rule__DiscreteFunction__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getRightCurlyBracketKeyword_9()); }
+
+	'}' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getRightCurlyBracketKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__10__Impl
+	rule__DiscreteFunction__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getYKeyword_10()); }
+
+	'y' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getYKeyword_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__11__Impl
+	rule__DiscreteFunction__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getYAssignment_11()); }
+(rule__DiscreteFunction__YAssignment_11)
+{ after(grammarAccess.getDiscreteFunctionAccess().getYAssignment_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__12__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getRightCurlyBracketKeyword_12()); }
+
+	'}' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getRightCurlyBracketKeyword_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DiscreteFunction__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group_4__0__Impl
+	rule__DiscreteFunction__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getUnitKeyword_4_0()); }
+
+	'unit' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getUnitKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getUnitAssignment_4_1()); }
+(rule__DiscreteFunction__UnitAssignment_4_1)
+{ after(grammarAccess.getDiscreteFunctionAccess().getUnitAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DiscreteFunction__Group_8__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group_8__0__Impl
+	rule__DiscreteFunction__Group_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group_8__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getCommaKeyword_8_0()); }
+
+	',' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getCommaKeyword_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group_8__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group_8__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group_8__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getXAssignment_8_1()); }
+(rule__DiscreteFunction__XAssignment_8_1)
+{ after(grammarAccess.getDiscreteFunctionAccess().getXAssignment_8_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EFloat__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EFloat__Group__0__Impl
+	rule__EFloat__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EFloat__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEFloatAccess().getHyphenMinusKeyword_0()); }
+(
+	'-' 
+)?
+{ after(grammarAccess.getEFloatAccess().getHyphenMinusKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EFloat__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EFloat__Group__1__Impl
+	rule__EFloat__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EFloat__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEFloatAccess().getINTTerminalRuleCall_1()); }
+(	RULE_INT)?
+{ after(grammarAccess.getEFloatAccess().getINTTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EFloat__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EFloat__Group__2__Impl
+	rule__EFloat__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EFloat__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEFloatAccess().getFullStopKeyword_2()); }
+
+	'.' 
+
+{ after(grammarAccess.getEFloatAccess().getFullStopKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EFloat__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EFloat__Group__3__Impl
+	rule__EFloat__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EFloat__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEFloatAccess().getINTTerminalRuleCall_3()); }
+	RULE_INT
+{ after(grammarAccess.getEFloatAccess().getINTTerminalRuleCall_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EFloat__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EFloat__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EFloat__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEFloatAccess().getGroup_4()); }
+(rule__EFloat__Group_4__0)?
+{ after(grammarAccess.getEFloatAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__EFloat__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EFloat__Group_4__0__Impl
+	rule__EFloat__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EFloat__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEFloatAccess().getAlternatives_4_0()); }
+(rule__EFloat__Alternatives_4_0)
+{ after(grammarAccess.getEFloatAccess().getAlternatives_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EFloat__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EFloat__Group_4__1__Impl
+	rule__EFloat__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EFloat__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEFloatAccess().getHyphenMinusKeyword_4_1()); }
+(
+	'-' 
+)?
+{ after(grammarAccess.getEFloatAccess().getHyphenMinusKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EFloat__Group_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EFloat__Group_4__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EFloat__Group_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEFloatAccess().getINTTerminalRuleCall_4_2()); }
+	RULE_INT
+{ after(grammarAccess.getEFloatAccess().getINTTerminalRuleCall_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__SpeedUnit__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SpeedUnit__Group__0__Impl
+	rule__SpeedUnit__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getSpeedUnitKeyword_0()); }
+
+	'SpeedUnit' 
+
+{ after(grammarAccess.getSpeedUnitAccess().getSpeedUnitKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SpeedUnit__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SpeedUnit__Group__1__Impl
+	rule__SpeedUnit__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getSpeedUnitAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SpeedUnit__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SpeedUnit__Group__2__Impl
+	rule__SpeedUnit__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getPrefixKeyword_2()); }
+
+	'prefix' 
+
+{ after(grammarAccess.getSpeedUnitAccess().getPrefixKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SpeedUnit__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SpeedUnit__Group__3__Impl
+	rule__SpeedUnit__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getPrefixAssignment_3()); }
+(rule__SpeedUnit__PrefixAssignment_3)
+{ after(grammarAccess.getSpeedUnitAccess().getPrefixAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SpeedUnit__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SpeedUnit__Group__4__Impl
+	rule__SpeedUnit__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getValueKeyword_4()); }
+
+	'value' 
+
+{ after(grammarAccess.getSpeedUnitAccess().getValueKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SpeedUnit__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SpeedUnit__Group__5__Impl
+	rule__SpeedUnit__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getValueAssignment_5()); }
+(rule__SpeedUnit__ValueAssignment_5)
+{ after(grammarAccess.getSpeedUnitAccess().getValueAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SpeedUnit__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SpeedUnit__Group__6__Impl
+	rule__SpeedUnit__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getUnitKeyword_6()); }
+
+	'unit' 
+
+{ after(grammarAccess.getSpeedUnitAccess().getUnitKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SpeedUnit__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SpeedUnit__Group__7__Impl
+	rule__SpeedUnit__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getUnitAssignment_7()); }
+(rule__SpeedUnit__UnitAssignment_7)
+{ after(grammarAccess.getSpeedUnitAccess().getUnitAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SpeedUnit__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SpeedUnit__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getRightCurlyBracketKeyword_8()); }
+
+	'}' 
+
+{ after(grammarAccess.getSpeedUnitAccess().getRightCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__EDouble__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EDouble__Group__0__Impl
+	rule__EDouble__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EDouble__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEDoubleAccess().getHyphenMinusKeyword_0()); }
+(
+	'-' 
+)?
+{ after(grammarAccess.getEDoubleAccess().getHyphenMinusKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EDouble__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EDouble__Group__1__Impl
+	rule__EDouble__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EDouble__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEDoubleAccess().getINTTerminalRuleCall_1()); }
+(	RULE_INT)?
+{ after(grammarAccess.getEDoubleAccess().getINTTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EDouble__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EDouble__Group__2__Impl
+	rule__EDouble__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EDouble__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEDoubleAccess().getFullStopKeyword_2()); }
+
+	'.' 
+
+{ after(grammarAccess.getEDoubleAccess().getFullStopKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EDouble__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EDouble__Group__3__Impl
+	rule__EDouble__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EDouble__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEDoubleAccess().getINTTerminalRuleCall_3()); }
+	RULE_INT
+{ after(grammarAccess.getEDoubleAccess().getINTTerminalRuleCall_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EDouble__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EDouble__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EDouble__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEDoubleAccess().getGroup_4()); }
+(rule__EDouble__Group_4__0)?
+{ after(grammarAccess.getEDoubleAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__EDouble__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EDouble__Group_4__0__Impl
+	rule__EDouble__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EDouble__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEDoubleAccess().getAlternatives_4_0()); }
+(rule__EDouble__Alternatives_4_0)
+{ after(grammarAccess.getEDoubleAccess().getAlternatives_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EDouble__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EDouble__Group_4__1__Impl
+	rule__EDouble__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EDouble__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEDoubleAccess().getHyphenMinusKeyword_4_1()); }
+(
+	'-' 
+)?
+{ after(grammarAccess.getEDoubleAccess().getHyphenMinusKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EDouble__Group_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EDouble__Group_4__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EDouble__Group_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEDoubleAccess().getINTTerminalRuleCall_4_2()); }
+	RULE_INT
+{ after(grammarAccess.getEDoubleAccess().getINTTerminalRuleCall_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ELong__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ELong__Group__0__Impl
+	rule__ELong__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ELong__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getELongAccess().getHyphenMinusKeyword_0()); }
+(
+	'-' 
+)?
+{ after(grammarAccess.getELongAccess().getHyphenMinusKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ELong__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ELong__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ELong__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getELongAccess().getINTTerminalRuleCall_1()); }
+	RULE_INT
+{ after(grammarAccess.getELongAccess().getINTTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DataSeries__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group__0__Impl
+	rule__DataSeries__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getDataSeriesAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDataSeriesAccess().getDataSeriesAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataSeries__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group__1__Impl
+	rule__DataSeries__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getDataSeriesKeyword_1()); }
+
+	'DataSeries' 
+
+{ after(grammarAccess.getDataSeriesAccess().getDataSeriesKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataSeries__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group__2__Impl
+	rule__DataSeries__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getDataSeriesAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataSeries__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group__3__Impl
+	rule__DataSeries__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getGroup_3()); }
+(rule__DataSeries__Group_3__0)?
+{ after(grammarAccess.getDataSeriesAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataSeries__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getDataSeriesAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataSeries__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group_3__0__Impl
+	rule__DataSeries__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getDataKeyword_3_0()); }
+
+	'data' 
+
+{ after(grammarAccess.getDataSeriesAccess().getDataKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataSeries__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group_3__1__Impl
+	rule__DataSeries__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getLeftCurlyBracketKeyword_3_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getDataSeriesAccess().getLeftCurlyBracketKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataSeries__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group_3__2__Impl
+	rule__DataSeries__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getDataAssignment_3_2()); }
+(rule__DataSeries__DataAssignment_3_2)
+{ after(grammarAccess.getDataSeriesAccess().getDataAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataSeries__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group_3__3__Impl
+	rule__DataSeries__Group_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getGroup_3_3()); }
+(rule__DataSeries__Group_3_3__0)*
+{ after(grammarAccess.getDataSeriesAccess().getGroup_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataSeries__Group_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getRightCurlyBracketKeyword_3_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getDataSeriesAccess().getRightCurlyBracketKeyword_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataSeries__Group_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group_3_3__0__Impl
+	rule__DataSeries__Group_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getCommaKeyword_3_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getDataSeriesAccess().getCommaKeyword_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataSeries__Group_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getDataAssignment_3_3_1()); }
+(rule__DataSeries__DataAssignment_3_3_1)
+{ after(grammarAccess.getDataSeriesAccess().getDataAssignment_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TrafficSource__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__0__Impl
+	rule__TrafficSource__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getTrafficSourceKeyword_0()); }
+
+	'TrafficSource' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getTrafficSourceKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__1__Impl
+	rule__TrafficSource__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getIdAssignment_1()); }
+(rule__TrafficSource__IdAssignment_1)
+{ after(grammarAccess.getTrafficSourceAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__2__Impl
+	rule__TrafficSource__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__3__Impl
+	rule__TrafficSource__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__4__Impl
+	rule__TrafficSource__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getNameAssignment_4()); }
+(rule__TrafficSource__NameAssignment_4)
+{ after(grammarAccess.getTrafficSourceAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__5__Impl
+	rule__TrafficSource__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getGroup_5()); }
+(rule__TrafficSource__Group_5__0)?
+{ after(grammarAccess.getTrafficSourceAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__6__Impl
+	rule__TrafficSource__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getGroup_6()); }
+(rule__TrafficSource__Group_6__0)?
+{ after(grammarAccess.getTrafficSourceAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__7__Impl
+	rule__TrafficSource__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getWorkloadKeyword_7()); }
+
+	'workload' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getWorkloadKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__8__Impl
+	rule__TrafficSource__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_8()); }
+
+	'{' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__9__Impl
+	rule__TrafficSource__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getWorkloadAssignment_9()); }
+(rule__TrafficSource__WorkloadAssignment_9)
+{ after(grammarAccess.getTrafficSourceAccess().getWorkloadAssignment_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__10__Impl
+	rule__TrafficSource__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getGroup_10()); }
+(rule__TrafficSource__Group_10__0)*
+{ after(grammarAccess.getTrafficSourceAccess().getGroup_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__11__Impl
+	rule__TrafficSource__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_11()); }
+
+	'}' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__12__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_12()); }
+
+	'}' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__TrafficSource__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_5__0__Impl
+	rule__TrafficSource__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_5__1__Impl
+	rule__TrafficSource__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_5__2__Impl
+	rule__TrafficSource__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__TrafficSource__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getTrafficSourceAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_5__3__Impl
+	rule__TrafficSource__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getGroup_5_3()); }
+(rule__TrafficSource__Group_5_3__0)*
+{ after(grammarAccess.getTrafficSourceAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__TrafficSource__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_5_3__0__Impl
+	rule__TrafficSource__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__TrafficSource__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getTrafficSourceAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TrafficSource__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_6__0__Impl
+	rule__TrafficSource__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAddressesKeyword_6_0()); }
+
+	'addresses' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getAddressesKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_6__1__Impl
+	rule__TrafficSource__Group_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_6_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_6__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_6__2__Impl
+	rule__TrafficSource__Group_6__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_6__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAddressesAssignment_6_2()); }
+(rule__TrafficSource__AddressesAssignment_6_2)
+{ after(grammarAccess.getTrafficSourceAccess().getAddressesAssignment_6_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_6__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_6__3__Impl
+	rule__TrafficSource__Group_6__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_6__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getGroup_6_3()); }
+(rule__TrafficSource__Group_6_3__0)*
+{ after(grammarAccess.getTrafficSourceAccess().getGroup_6_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_6__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_6__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_6__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_6_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_6_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__TrafficSource__Group_6_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_6_3__0__Impl
+	rule__TrafficSource__Group_6_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_6_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getCommaKeyword_6_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getCommaKeyword_6_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_6_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_6_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_6_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAddressesAssignment_6_3_1()); }
+(rule__TrafficSource__AddressesAssignment_6_3_1)
+{ after(grammarAccess.getTrafficSourceAccess().getAddressesAssignment_6_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TrafficSource__Group_10__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_10__0__Impl
+	rule__TrafficSource__Group_10__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_10__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getCommaKeyword_10_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getCommaKeyword_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_10__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_10__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_10__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getWorkloadAssignment_10_1()); }
+(rule__TrafficSource__WorkloadAssignment_10_1)
+{ after(grammarAccess.getTrafficSourceAccess().getWorkloadAssignment_10_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__GenericWorkload__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group__0__Impl
+	rule__GenericWorkload__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getGenericWorkloadAction_0()); }
+(
+
+)
+{ after(grammarAccess.getGenericWorkloadAccess().getGenericWorkloadAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericWorkload__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group__1__Impl
+	rule__GenericWorkload__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getGenericWorkloadKeyword_1()); }
+
+	'GenericWorkload' 
+
+{ after(grammarAccess.getGenericWorkloadAccess().getGenericWorkloadKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericWorkload__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group__2__Impl
+	rule__GenericWorkload__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getGenericWorkloadAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericWorkload__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group__3__Impl
+	rule__GenericWorkload__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getGroup_3()); }
+(rule__GenericWorkload__Group_3__0)?
+{ after(grammarAccess.getGenericWorkloadAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericWorkload__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getGenericWorkloadAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__GenericWorkload__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group_3__0__Impl
+	rule__GenericWorkload__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getActionsKeyword_3_0()); }
+
+	'actions' 
+
+{ after(grammarAccess.getGenericWorkloadAccess().getActionsKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericWorkload__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group_3__1__Impl
+	rule__GenericWorkload__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getLeftCurlyBracketKeyword_3_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getGenericWorkloadAccess().getLeftCurlyBracketKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericWorkload__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group_3__2__Impl
+	rule__GenericWorkload__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getActionsAssignment_3_2()); }
+(rule__GenericWorkload__ActionsAssignment_3_2)
+{ after(grammarAccess.getGenericWorkloadAccess().getActionsAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericWorkload__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group_3__3__Impl
+	rule__GenericWorkload__Group_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getGroup_3_3()); }
+(rule__GenericWorkload__Group_3_3__0)*
+{ after(grammarAccess.getGenericWorkloadAccess().getGroup_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericWorkload__Group_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getRightCurlyBracketKeyword_3_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getGenericWorkloadAccess().getRightCurlyBracketKeyword_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__GenericWorkload__Group_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group_3_3__0__Impl
+	rule__GenericWorkload__Group_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getCommaKeyword_3_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getGenericWorkloadAccess().getCommaKeyword_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericWorkload__Group_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getActionsAssignment_3_3_1()); }
+(rule__GenericWorkload__ActionsAssignment_3_3_1)
+{ after(grammarAccess.getGenericWorkloadAccess().getActionsAssignment_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__BranchAction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group__0__Impl
+	rule__BranchAction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getBranchActionKeyword_0()); }
+
+	'BranchAction' 
+
+{ after(grammarAccess.getBranchActionAccess().getBranchActionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BranchAction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group__1__Impl
+	rule__BranchAction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getBranchActionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BranchAction__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group__2__Impl
+	rule__BranchAction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getInternKeyword_2()); }
+
+	'intern' 
+
+{ after(grammarAccess.getBranchActionAccess().getInternKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BranchAction__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group__3__Impl
+	rule__BranchAction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getLeftCurlyBracketKeyword_3()); }
+
+	'{' 
+
+{ after(grammarAccess.getBranchActionAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BranchAction__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group__4__Impl
+	rule__BranchAction__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getInternAssignment_4()); }
+(rule__BranchAction__InternAssignment_4)
+{ after(grammarAccess.getBranchActionAccess().getInternAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BranchAction__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group__5__Impl
+	rule__BranchAction__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getGroup_5()); }
+(rule__BranchAction__Group_5__0)*
+{ after(grammarAccess.getBranchActionAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BranchAction__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group__6__Impl
+	rule__BranchAction__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getBranchActionAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BranchAction__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getRightCurlyBracketKeyword_7()); }
+
+	'}' 
+
+{ after(grammarAccess.getBranchActionAccess().getRightCurlyBracketKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__BranchAction__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group_5__0__Impl
+	rule__BranchAction__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getCommaKeyword_5_0()); }
+
+	',' 
+
+{ after(grammarAccess.getBranchActionAccess().getCommaKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BranchAction__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getInternAssignment_5_1()); }
+(rule__BranchAction__InternAssignment_5_1)
+{ after(grammarAccess.getBranchActionAccess().getInternAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LoopAction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LoopAction__Group__0__Impl
+	rule__LoopAction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LoopAction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLoopActionAccess().getLoopActionKeyword_0()); }
+
+	'LoopAction' 
+
+{ after(grammarAccess.getLoopActionAccess().getLoopActionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LoopAction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LoopAction__Group__1__Impl
+	rule__LoopAction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LoopAction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLoopActionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getLoopActionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LoopAction__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LoopAction__Group__2__Impl
+	rule__LoopAction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LoopAction__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLoopActionAccess().getInternKeyword_2()); }
+
+	'intern' 
+
+{ after(grammarAccess.getLoopActionAccess().getInternKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LoopAction__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LoopAction__Group__3__Impl
+	rule__LoopAction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LoopAction__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLoopActionAccess().getInternAssignment_3()); }
+(rule__LoopAction__InternAssignment_3)
+{ after(grammarAccess.getLoopActionAccess().getInternAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LoopAction__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LoopAction__Group__4__Impl
+	rule__LoopAction__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LoopAction__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLoopActionAccess().getNumIterationsKeyword_4()); }
+
+	'numIterations' 
+
+{ after(grammarAccess.getLoopActionAccess().getNumIterationsKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LoopAction__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LoopAction__Group__5__Impl
+	rule__LoopAction__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LoopAction__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLoopActionAccess().getNumIterationsAssignment_5()); }
+(rule__LoopAction__NumIterationsAssignment_5)
+{ after(grammarAccess.getLoopActionAccess().getNumIterationsAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LoopAction__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LoopAction__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LoopAction__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLoopActionAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getLoopActionAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__SequenceAction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group__0__Impl
+	rule__SequenceAction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getSequenceActionKeyword_0()); }
+
+	'SequenceAction' 
+
+{ after(grammarAccess.getSequenceActionAccess().getSequenceActionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SequenceAction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group__1__Impl
+	rule__SequenceAction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getSequenceActionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SequenceAction__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group__2__Impl
+	rule__SequenceAction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getInternKeyword_2()); }
+
+	'intern' 
+
+{ after(grammarAccess.getSequenceActionAccess().getInternKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SequenceAction__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group__3__Impl
+	rule__SequenceAction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getLeftCurlyBracketKeyword_3()); }
+
+	'{' 
+
+{ after(grammarAccess.getSequenceActionAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SequenceAction__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group__4__Impl
+	rule__SequenceAction__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getInternAssignment_4()); }
+(rule__SequenceAction__InternAssignment_4)
+{ after(grammarAccess.getSequenceActionAccess().getInternAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SequenceAction__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group__5__Impl
+	rule__SequenceAction__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getGroup_5()); }
+(rule__SequenceAction__Group_5__0)*
+{ after(grammarAccess.getSequenceActionAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SequenceAction__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group__6__Impl
+	rule__SequenceAction__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getSequenceActionAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SequenceAction__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getRightCurlyBracketKeyword_7()); }
+
+	'}' 
+
+{ after(grammarAccess.getSequenceActionAccess().getRightCurlyBracketKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__SequenceAction__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group_5__0__Impl
+	rule__SequenceAction__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getCommaKeyword_5_0()); }
+
+	',' 
+
+{ after(grammarAccess.getSequenceActionAccess().getCommaKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SequenceAction__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getInternAssignment_5_1()); }
+(rule__SequenceAction__InternAssignment_5_1)
+{ after(grammarAccess.getSequenceActionAccess().getInternAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__StartAction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StartAction__Group__0__Impl
+	rule__StartAction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StartAction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStartActionAccess().getStartActionAction_0()); }
+(
+
+)
+{ after(grammarAccess.getStartActionAccess().getStartActionAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StartAction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StartAction__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StartAction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStartActionAccess().getStartActionKeyword_1()); }
+
+	'StartAction' 
+
+{ after(grammarAccess.getStartActionAccess().getStartActionKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__StopAction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StopAction__Group__0__Impl
+	rule__StopAction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StopAction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStopActionAccess().getStopActionAction_0()); }
+(
+
+)
+{ after(grammarAccess.getStopActionAccess().getStopActionAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StopAction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StopAction__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StopAction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStopActionAccess().getStopActionKeyword_1()); }
+
+	'StopAction' 
+
+{ after(grammarAccess.getStopActionAccess().getStopActionKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TransmitAction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TransmitAction__Group__0__Impl
+	rule__TransmitAction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TransmitAction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTransmitActionAccess().getTransmitActionKeyword_0()); }
+
+	'TransmitAction' 
+
+{ after(grammarAccess.getTransmitActionAccess().getTransmitActionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TransmitAction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TransmitAction__Group__1__Impl
+	rule__TransmitAction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TransmitAction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTransmitActionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getTransmitActionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TransmitAction__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TransmitAction__Group__2__Impl
+	rule__TransmitAction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TransmitAction__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTransmitActionAccess().getFlowKeyword_2()); }
+
+	'flow' 
+
+{ after(grammarAccess.getTransmitActionAccess().getFlowKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TransmitAction__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TransmitAction__Group__3__Impl
+	rule__TransmitAction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TransmitAction__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTransmitActionAccess().getFlowAssignment_3()); }
+(rule__TransmitAction__FlowAssignment_3)
+{ after(grammarAccess.getTransmitActionAccess().getFlowAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TransmitAction__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TransmitAction__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TransmitAction__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTransmitActionAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getTransmitActionAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__WaitAction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WaitAction__Group__0__Impl
+	rule__WaitAction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WaitAction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWaitActionAccess().getWaitActionKeyword_0()); }
+
+	'WaitAction' 
+
+{ after(grammarAccess.getWaitActionAccess().getWaitActionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WaitAction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WaitAction__Group__1__Impl
+	rule__WaitAction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WaitAction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWaitActionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getWaitActionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WaitAction__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WaitAction__Group__2__Impl
+	rule__WaitAction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WaitAction__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWaitActionAccess().getWaitTimeKeyword_2()); }
+
+	'waitTime' 
+
+{ after(grammarAccess.getWaitActionAccess().getWaitTimeKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WaitAction__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WaitAction__Group__3__Impl
+	rule__WaitAction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WaitAction__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWaitActionAccess().getWaitTimeAssignment_3()); }
+(rule__WaitAction__WaitTimeAssignment_3)
+{ after(grammarAccess.getWaitActionAccess().getWaitTimeAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WaitAction__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WaitAction__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WaitAction__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWaitActionAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getWaitActionAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualNode__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__0__Impl
+	rule__VirtualNode__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getVirtualNodeKeyword_0()); }
+
+	'VirtualNode' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getVirtualNodeKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__1__Impl
+	rule__VirtualNode__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getIdAssignment_1()); }
+(rule__VirtualNode__IdAssignment_1)
+{ after(grammarAccess.getVirtualNodeAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__2__Impl
+	rule__VirtualNode__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__3__Impl
+	rule__VirtualNode__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__4__Impl
+	rule__VirtualNode__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getNameAssignment_4()); }
+(rule__VirtualNode__NameAssignment_4)
+{ after(grammarAccess.getVirtualNodeAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__5__Impl
+	rule__VirtualNode__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getGroup_5()); }
+(rule__VirtualNode__Group_5__0)?
+{ after(grammarAccess.getVirtualNodeAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__6__Impl
+	rule__VirtualNode__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getGroup_6()); }
+(rule__VirtualNode__Group_6__0)?
+{ after(grammarAccess.getVirtualNodeAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__7__Impl
+	rule__VirtualNode__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getHostedOnKeyword_7()); }
+
+	'hostedOn' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getHostedOnKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__8__Impl
+	rule__VirtualNode__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getHostedOnAssignment_8()); }
+(rule__VirtualNode__HostedOnAssignment_8)
+{ after(grammarAccess.getVirtualNodeAccess().getHostedOnAssignment_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__9__Impl
+	rule__VirtualNode__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getPerformanceKeyword_9()); }
+
+	'performance' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getPerformanceKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__10__Impl
+	rule__VirtualNode__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getPerformanceAssignment_10()); }
+(rule__VirtualNode__PerformanceAssignment_10)
+{ after(grammarAccess.getVirtualNodeAccess().getPerformanceAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__11__Impl
+	rule__VirtualNode__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getGroup_11()); }
+(rule__VirtualNode__Group_11__0)?
+{ after(grammarAccess.getVirtualNodeAccess().getGroup_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__12__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getRightCurlyBracketKeyword_12()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getRightCurlyBracketKeyword_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualNode__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_5__0__Impl
+	rule__VirtualNode__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_5__1__Impl
+	rule__VirtualNode__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_5__2__Impl
+	rule__VirtualNode__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__VirtualNode__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getVirtualNodeAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_5__3__Impl
+	rule__VirtualNode__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getGroup_5_3()); }
+(rule__VirtualNode__Group_5_3__0)*
+{ after(grammarAccess.getVirtualNodeAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualNode__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_5_3__0__Impl
+	rule__VirtualNode__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__VirtualNode__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getVirtualNodeAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__VirtualNode__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_6__0__Impl
+	rule__VirtualNode__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getSoftwareKeyword_6_0()); }
+
+	'software' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getSoftwareKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_6__1__Impl
+	rule__VirtualNode__Group_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getLeftParenthesisKeyword_6_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getLeftParenthesisKeyword_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_6__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_6__2__Impl
+	rule__VirtualNode__Group_6__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_6__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getSoftwareAssignment_6_2()); }
+(rule__VirtualNode__SoftwareAssignment_6_2)
+{ after(grammarAccess.getVirtualNodeAccess().getSoftwareAssignment_6_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_6__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_6__3__Impl
+	rule__VirtualNode__Group_6__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_6__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getGroup_6_3()); }
+(rule__VirtualNode__Group_6_3__0)*
+{ after(grammarAccess.getVirtualNodeAccess().getGroup_6_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_6__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_6__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_6__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getRightParenthesisKeyword_6_4()); }
+
+	')' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getRightParenthesisKeyword_6_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualNode__Group_6_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_6_3__0__Impl
+	rule__VirtualNode__Group_6_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_6_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getCommaKeyword_6_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getCommaKeyword_6_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_6_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_6_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_6_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getSoftwareAssignment_6_3_1()); }
+(rule__VirtualNode__SoftwareAssignment_6_3_1)
+{ after(grammarAccess.getVirtualNodeAccess().getSoftwareAssignment_6_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__VirtualNode__Group_11__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_11__0__Impl
+	rule__VirtualNode__Group_11__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_11__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getInterfacesKeyword_11_0()); }
+
+	'interfaces' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getInterfacesKeyword_11_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_11__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_11__1__Impl
+	rule__VirtualNode__Group_11__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_11__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getLeftCurlyBracketKeyword_11_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getLeftCurlyBracketKeyword_11_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_11__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_11__2__Impl
+	rule__VirtualNode__Group_11__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_11__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getInterfacesAssignment_11_2()); }
+(rule__VirtualNode__InterfacesAssignment_11_2)
+{ after(grammarAccess.getVirtualNodeAccess().getInterfacesAssignment_11_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_11__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_11__3__Impl
+	rule__VirtualNode__Group_11__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_11__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getGroup_11_3()); }
+(rule__VirtualNode__Group_11_3__0)*
+{ after(grammarAccess.getVirtualNodeAccess().getGroup_11_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_11__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_11__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_11__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getRightCurlyBracketKeyword_11_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getRightCurlyBracketKeyword_11_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualNode__Group_11_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_11_3__0__Impl
+	rule__VirtualNode__Group_11_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_11_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getCommaKeyword_11_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getCommaKeyword_11_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_11_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_11_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_11_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getInterfacesAssignment_11_3_1()); }
+(rule__VirtualNode__InterfacesAssignment_11_3_1)
+{ after(grammarAccess.getVirtualNodeAccess().getInterfacesAssignment_11_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PhysicalNode__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__0__Impl
+	rule__PhysicalNode__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getPhysicalNodeKeyword_0()); }
+
+	'PhysicalNode' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getPhysicalNodeKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__1__Impl
+	rule__PhysicalNode__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getIdAssignment_1()); }
+(rule__PhysicalNode__IdAssignment_1)
+{ after(grammarAccess.getPhysicalNodeAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__2__Impl
+	rule__PhysicalNode__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__3__Impl
+	rule__PhysicalNode__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__4__Impl
+	rule__PhysicalNode__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getNameAssignment_4()); }
+(rule__PhysicalNode__NameAssignment_4)
+{ after(grammarAccess.getPhysicalNodeAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__5__Impl
+	rule__PhysicalNode__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getGroup_5()); }
+(rule__PhysicalNode__Group_5__0)?
+{ after(grammarAccess.getPhysicalNodeAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__6__Impl
+	rule__PhysicalNode__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getGroup_6()); }
+(rule__PhysicalNode__Group_6__0)?
+{ after(grammarAccess.getPhysicalNodeAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__7__Impl
+	rule__PhysicalNode__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getGroup_7()); }
+(rule__PhysicalNode__Group_7__0)?
+{ after(grammarAccess.getPhysicalNodeAccess().getGroup_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__8__Impl
+	rule__PhysicalNode__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getPerformanceKeyword_8()); }
+
+	'performance' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getPerformanceKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__9__Impl
+	rule__PhysicalNode__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getPerformanceAssignment_9()); }
+(rule__PhysicalNode__PerformanceAssignment_9)
+{ after(grammarAccess.getPhysicalNodeAccess().getPerformanceAssignment_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__10__Impl
+	rule__PhysicalNode__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getGroup_10()); }
+(rule__PhysicalNode__Group_10__0)?
+{ after(grammarAccess.getPhysicalNodeAccess().getGroup_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__11__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getRightCurlyBracketKeyword_11()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getRightCurlyBracketKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalNode__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_5__0__Impl
+	rule__PhysicalNode__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_5__1__Impl
+	rule__PhysicalNode__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_5__2__Impl
+	rule__PhysicalNode__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__PhysicalNode__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_5__3__Impl
+	rule__PhysicalNode__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getGroup_5_3()); }
+(rule__PhysicalNode__Group_5_3__0)*
+{ after(grammarAccess.getPhysicalNodeAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalNode__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_5_3__0__Impl
+	rule__PhysicalNode__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__PhysicalNode__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PhysicalNode__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_6__0__Impl
+	rule__PhysicalNode__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getSoftwareKeyword_6_0()); }
+
+	'software' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getSoftwareKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_6__1__Impl
+	rule__PhysicalNode__Group_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getLeftParenthesisKeyword_6_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getLeftParenthesisKeyword_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_6__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_6__2__Impl
+	rule__PhysicalNode__Group_6__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_6__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getSoftwareAssignment_6_2()); }
+(rule__PhysicalNode__SoftwareAssignment_6_2)
+{ after(grammarAccess.getPhysicalNodeAccess().getSoftwareAssignment_6_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_6__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_6__3__Impl
+	rule__PhysicalNode__Group_6__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_6__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getGroup_6_3()); }
+(rule__PhysicalNode__Group_6_3__0)*
+{ after(grammarAccess.getPhysicalNodeAccess().getGroup_6_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_6__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_6__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_6__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getRightParenthesisKeyword_6_4()); }
+
+	')' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getRightParenthesisKeyword_6_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalNode__Group_6_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_6_3__0__Impl
+	rule__PhysicalNode__Group_6_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_6_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_6_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_6_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_6_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_6_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_6_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getSoftwareAssignment_6_3_1()); }
+(rule__PhysicalNode__SoftwareAssignment_6_3_1)
+{ after(grammarAccess.getPhysicalNodeAccess().getSoftwareAssignment_6_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PhysicalNode__Group_7__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_7__0__Impl
+	rule__PhysicalNode__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_7__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getHostsKeyword_7_0()); }
+
+	'hosts' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getHostsKeyword_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_7__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_7__1__Impl
+	rule__PhysicalNode__Group_7__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_7__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getLeftParenthesisKeyword_7_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getLeftParenthesisKeyword_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_7__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_7__2__Impl
+	rule__PhysicalNode__Group_7__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_7__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getHostsAssignment_7_2()); }
+(rule__PhysicalNode__HostsAssignment_7_2)
+{ after(grammarAccess.getPhysicalNodeAccess().getHostsAssignment_7_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_7__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_7__3__Impl
+	rule__PhysicalNode__Group_7__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_7__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getGroup_7_3()); }
+(rule__PhysicalNode__Group_7_3__0)*
+{ after(grammarAccess.getPhysicalNodeAccess().getGroup_7_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_7__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_7__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_7__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getRightParenthesisKeyword_7_4()); }
+
+	')' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getRightParenthesisKeyword_7_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalNode__Group_7_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_7_3__0__Impl
+	rule__PhysicalNode__Group_7_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_7_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_7_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_7_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_7_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_7_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_7_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getHostsAssignment_7_3_1()); }
+(rule__PhysicalNode__HostsAssignment_7_3_1)
+{ after(grammarAccess.getPhysicalNodeAccess().getHostsAssignment_7_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PhysicalNode__Group_10__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_10__0__Impl
+	rule__PhysicalNode__Group_10__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_10__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getInterfacesKeyword_10_0()); }
+
+	'interfaces' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getInterfacesKeyword_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_10__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_10__1__Impl
+	rule__PhysicalNode__Group_10__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_10__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getLeftCurlyBracketKeyword_10_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getLeftCurlyBracketKeyword_10_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_10__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_10__2__Impl
+	rule__PhysicalNode__Group_10__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_10__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getInterfacesAssignment_10_2()); }
+(rule__PhysicalNode__InterfacesAssignment_10_2)
+{ after(grammarAccess.getPhysicalNodeAccess().getInterfacesAssignment_10_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_10__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_10__3__Impl
+	rule__PhysicalNode__Group_10__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_10__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getGroup_10_3()); }
+(rule__PhysicalNode__Group_10_3__0)*
+{ after(grammarAccess.getPhysicalNodeAccess().getGroup_10_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_10__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_10__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_10__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getRightCurlyBracketKeyword_10_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getRightCurlyBracketKeyword_10_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalNode__Group_10_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_10_3__0__Impl
+	rule__PhysicalNode__Group_10_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_10_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_10_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_10_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_10_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_10_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_10_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getInterfacesAssignment_10_3_1()); }
+(rule__PhysicalNode__InterfacesAssignment_10_3_1)
+{ after(grammarAccess.getPhysicalNodeAccess().getInterfacesAssignment_10_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PhysicalLink__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__0__Impl
+	rule__PhysicalLink__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getPhysicalLinkKeyword_0()); }
+
+	'PhysicalLink' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getPhysicalLinkKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__1__Impl
+	rule__PhysicalLink__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getIdAssignment_1()); }
+(rule__PhysicalLink__IdAssignment_1)
+{ after(grammarAccess.getPhysicalLinkAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__2__Impl
+	rule__PhysicalLink__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__3__Impl
+	rule__PhysicalLink__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__4__Impl
+	rule__PhysicalLink__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getNameAssignment_4()); }
+(rule__PhysicalLink__NameAssignment_4)
+{ after(grammarAccess.getPhysicalLinkAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__5__Impl
+	rule__PhysicalLink__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getGroup_5()); }
+(rule__PhysicalLink__Group_5__0)?
+{ after(grammarAccess.getPhysicalLinkAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__6__Impl
+	rule__PhysicalLink__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getConnectsKeyword_6()); }
+
+	'connects' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getConnectsKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__7__Impl
+	rule__PhysicalLink__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getLeftParenthesisKeyword_7()); }
+
+	'(' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getLeftParenthesisKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__8__Impl
+	rule__PhysicalLink__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getConnectsAssignment_8()); }
+(rule__PhysicalLink__ConnectsAssignment_8)
+{ after(grammarAccess.getPhysicalLinkAccess().getConnectsAssignment_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__9__Impl
+	rule__PhysicalLink__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getGroup_9()); }
+(rule__PhysicalLink__Group_9__0)*
+{ after(grammarAccess.getPhysicalLinkAccess().getGroup_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__10__Impl
+	rule__PhysicalLink__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getRightParenthesisKeyword_10()); }
+
+	')' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getRightParenthesisKeyword_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__11__Impl
+	rule__PhysicalLink__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getPerformanceKeyword_11()); }
+
+	'performance' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getPerformanceKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__12__Impl
+	rule__PhysicalLink__Group__13
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getPerformanceAssignment_12()); }
+(rule__PhysicalLink__PerformanceAssignment_12)
+{ after(grammarAccess.getPhysicalLinkAccess().getPerformanceAssignment_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__13
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__13__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__13__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getRightCurlyBracketKeyword_13()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getRightCurlyBracketKeyword_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalLink__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group_5__0__Impl
+	rule__PhysicalLink__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group_5__1__Impl
+	rule__PhysicalLink__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group_5__2__Impl
+	rule__PhysicalLink__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__PhysicalLink__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group_5__3__Impl
+	rule__PhysicalLink__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getGroup_5_3()); }
+(rule__PhysicalLink__Group_5_3__0)*
+{ after(grammarAccess.getPhysicalLinkAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalLink__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group_5_3__0__Impl
+	rule__PhysicalLink__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__PhysicalLink__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PhysicalLink__Group_9__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group_9__0__Impl
+	rule__PhysicalLink__Group_9__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group_9__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getCommaKeyword_9_0()); }
+
+	',' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getCommaKeyword_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group_9__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group_9__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group_9__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getConnectsAssignment_9_1()); }
+(rule__PhysicalLink__ConnectsAssignment_9_1)
+{ after(grammarAccess.getPhysicalLinkAccess().getConnectsAssignment_9_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__VirtualLink__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__0__Impl
+	rule__VirtualLink__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getVirtualLinkKeyword_0()); }
+
+	'VirtualLink' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getVirtualLinkKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__1__Impl
+	rule__VirtualLink__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getIdAssignment_1()); }
+(rule__VirtualLink__IdAssignment_1)
+{ after(grammarAccess.getVirtualLinkAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__2__Impl
+	rule__VirtualLink__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__3__Impl
+	rule__VirtualLink__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__4__Impl
+	rule__VirtualLink__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getNameAssignment_4()); }
+(rule__VirtualLink__NameAssignment_4)
+{ after(grammarAccess.getVirtualLinkAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__5__Impl
+	rule__VirtualLink__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getGroup_5()); }
+(rule__VirtualLink__Group_5__0)?
+{ after(grammarAccess.getVirtualLinkAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__6__Impl
+	rule__VirtualLink__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getConnectsKeyword_6()); }
+
+	'connects' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getConnectsKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__7__Impl
+	rule__VirtualLink__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getLeftParenthesisKeyword_7()); }
+
+	'(' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getLeftParenthesisKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__8__Impl
+	rule__VirtualLink__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getConnectsAssignment_8()); }
+(rule__VirtualLink__ConnectsAssignment_8)
+{ after(grammarAccess.getVirtualLinkAccess().getConnectsAssignment_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__9__Impl
+	rule__VirtualLink__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getGroup_9()); }
+(rule__VirtualLink__Group_9__0)*
+{ after(grammarAccess.getVirtualLinkAccess().getGroup_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__10__Impl
+	rule__VirtualLink__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getRightParenthesisKeyword_10()); }
+
+	')' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getRightParenthesisKeyword_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__11__Impl
+	rule__VirtualLink__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getPerformanceKeyword_11()); }
+
+	'performance' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getPerformanceKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__12__Impl
+	rule__VirtualLink__Group__13
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getPerformanceAssignment_12()); }
+(rule__VirtualLink__PerformanceAssignment_12)
+{ after(grammarAccess.getVirtualLinkAccess().getPerformanceAssignment_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__13
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__13__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__13__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getRightCurlyBracketKeyword_13()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getRightCurlyBracketKeyword_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualLink__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group_5__0__Impl
+	rule__VirtualLink__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group_5__1__Impl
+	rule__VirtualLink__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group_5__2__Impl
+	rule__VirtualLink__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__VirtualLink__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getVirtualLinkAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group_5__3__Impl
+	rule__VirtualLink__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getGroup_5_3()); }
+(rule__VirtualLink__Group_5_3__0)*
+{ after(grammarAccess.getVirtualLinkAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualLink__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group_5_3__0__Impl
+	rule__VirtualLink__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__VirtualLink__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getVirtualLinkAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__VirtualLink__Group_9__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group_9__0__Impl
+	rule__VirtualLink__Group_9__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group_9__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getCommaKeyword_9_0()); }
+
+	',' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getCommaKeyword_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group_9__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group_9__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group_9__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getConnectsAssignment_9_1()); }
+(rule__VirtualLink__ConnectsAssignment_9_1)
+{ after(grammarAccess.getVirtualLinkAccess().getConnectsAssignment_9_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ProtocolsRepository__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group__0__Impl
+	rule__ProtocolsRepository__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getProtocolsRepositoryKeyword_0()); }
+
+	'ProtocolsRepository' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getProtocolsRepositoryKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group__1__Impl
+	rule__ProtocolsRepository__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group__2__Impl
+	rule__ProtocolsRepository__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getGroup_2()); }
+(rule__ProtocolsRepository__Group_2__0)?
+{ after(grammarAccess.getProtocolsRepositoryAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group__3__Impl
+	rule__ProtocolsRepository__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getProtocolsKeyword_3()); }
+
+	'protocols' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getProtocolsKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group__4__Impl
+	rule__ProtocolsRepository__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getLeftCurlyBracketKeyword_4()); }
+
+	'{' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getLeftCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group__5__Impl
+	rule__ProtocolsRepository__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getProtocolsAssignment_5()); }
+(rule__ProtocolsRepository__ProtocolsAssignment_5)
+{ after(grammarAccess.getProtocolsRepositoryAccess().getProtocolsAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group__6__Impl
+	rule__ProtocolsRepository__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getGroup_6()); }
+(rule__ProtocolsRepository__Group_6__0)*
+{ after(grammarAccess.getProtocolsRepositoryAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group__7__Impl
+	rule__ProtocolsRepository__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getRightCurlyBracketKeyword_7()); }
+
+	'}' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getRightCurlyBracketKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getRightCurlyBracketKeyword_8()); }
+
+	'}' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getRightCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ProtocolsRepository__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group_2__0__Impl
+	rule__ProtocolsRepository__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getStacksKeyword_2_0()); }
+
+	'stacks' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getStacksKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group_2__1__Impl
+	rule__ProtocolsRepository__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getLeftCurlyBracketKeyword_2_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getLeftCurlyBracketKeyword_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group_2__2__Impl
+	rule__ProtocolsRepository__Group_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getStacksAssignment_2_2()); }
+(rule__ProtocolsRepository__StacksAssignment_2_2)
+{ after(grammarAccess.getProtocolsRepositoryAccess().getStacksAssignment_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group_2__3__Impl
+	rule__ProtocolsRepository__Group_2__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getGroup_2_3()); }
+(rule__ProtocolsRepository__Group_2_3__0)*
+{ after(grammarAccess.getProtocolsRepositoryAccess().getGroup_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group_2__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group_2__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group_2__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getRightCurlyBracketKeyword_2_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getRightCurlyBracketKeyword_2_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ProtocolsRepository__Group_2_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group_2_3__0__Impl
+	rule__ProtocolsRepository__Group_2_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group_2_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getCommaKeyword_2_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getCommaKeyword_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group_2_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group_2_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group_2_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getStacksAssignment_2_3_1()); }
+(rule__ProtocolsRepository__StacksAssignment_2_3_1)
+{ after(grammarAccess.getProtocolsRepositoryAccess().getStacksAssignment_2_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ProtocolsRepository__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group_6__0__Impl
+	rule__ProtocolsRepository__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getCommaKeyword_6_0()); }
+
+	',' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getCommaKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group_6__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getProtocolsAssignment_6_1()); }
+(rule__ProtocolsRepository__ProtocolsAssignment_6_1)
+{ after(grammarAccess.getProtocolsRepositoryAccess().getProtocolsAssignment_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RoutesRepository__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group__0__Impl
+	rule__RoutesRepository__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRoutesRepositoryAction_0()); }
+(
+
+)
+{ after(grammarAccess.getRoutesRepositoryAccess().getRoutesRepositoryAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group__1__Impl
+	rule__RoutesRepository__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRoutesRepositoryKeyword_1()); }
+
+	'RoutesRepository' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getRoutesRepositoryKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group__2__Impl
+	rule__RoutesRepository__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group__3__Impl
+	rule__RoutesRepository__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getGroup_3()); }
+(rule__RoutesRepository__Group_3__0)?
+{ after(grammarAccess.getRoutesRepositoryAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group__4__Impl
+	rule__RoutesRepository__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getGroup_4()); }
+(rule__RoutesRepository__Group_4__0)?
+{ after(grammarAccess.getRoutesRepositoryAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group__5__Impl
+	rule__RoutesRepository__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getGroup_5()); }
+(rule__RoutesRepository__Group_5__0)?
+{ after(grammarAccess.getRoutesRepositoryAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__RoutesRepository__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_3__0__Impl
+	rule__RoutesRepository__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRoutesKeyword_3_0()); }
+
+	'routes' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getRoutesKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_3__1__Impl
+	rule__RoutesRepository__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_3_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_3__2__Impl
+	rule__RoutesRepository__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRoutesAssignment_3_2()); }
+(rule__RoutesRepository__RoutesAssignment_3_2)
+{ after(grammarAccess.getRoutesRepositoryAccess().getRoutesAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_3__3__Impl
+	rule__RoutesRepository__Group_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getGroup_3_3()); }
+(rule__RoutesRepository__Group_3_3__0)*
+{ after(grammarAccess.getRoutesRepositoryAccess().getGroup_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_3_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__RoutesRepository__Group_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_3_3__0__Impl
+	rule__RoutesRepository__Group_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getCommaKeyword_3_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getCommaKeyword_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRoutesAssignment_3_3_1()); }
+(rule__RoutesRepository__RoutesAssignment_3_3_1)
+{ after(grammarAccess.getRoutesRepositoryAccess().getRoutesAssignment_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RoutesRepository__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_4__0__Impl
+	rule__RoutesRepository__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesKeyword_4_0()); }
+
+	'flowRoutes' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_4__1__Impl
+	rule__RoutesRepository__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_4_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_4__2__Impl
+	rule__RoutesRepository__Group_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesAssignment_4_2()); }
+(rule__RoutesRepository__FlowRoutesAssignment_4_2)
+{ after(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesAssignment_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_4__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_4__3__Impl
+	rule__RoutesRepository__Group_4__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_4__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getGroup_4_3()); }
+(rule__RoutesRepository__Group_4_3__0)*
+{ after(grammarAccess.getRoutesRepositoryAccess().getGroup_4_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_4__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_4__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_4__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_4_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_4_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__RoutesRepository__Group_4_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_4_3__0__Impl
+	rule__RoutesRepository__Group_4_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_4_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getCommaKeyword_4_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getCommaKeyword_4_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_4_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_4_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_4_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesAssignment_4_3_1()); }
+(rule__RoutesRepository__FlowRoutesAssignment_4_3_1)
+{ after(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesAssignment_4_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RoutesRepository__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_5__0__Impl
+	rule__RoutesRepository__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getDirectionsKeyword_5_0()); }
+
+	'directions' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getDirectionsKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_5__1__Impl
+	rule__RoutesRepository__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_5__2__Impl
+	rule__RoutesRepository__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getDirectionsAssignment_5_2()); }
+(rule__RoutesRepository__DirectionsAssignment_5_2)
+{ after(grammarAccess.getRoutesRepositoryAccess().getDirectionsAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_5__3__Impl
+	rule__RoutesRepository__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getGroup_5_3()); }
+(rule__RoutesRepository__Group_5_3__0)*
+{ after(grammarAccess.getRoutesRepositoryAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__RoutesRepository__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_5_3__0__Impl
+	rule__RoutesRepository__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getDirectionsAssignment_5_3_1()); }
+(rule__RoutesRepository__DirectionsAssignment_5_3_1)
+{ after(grammarAccess.getRoutesRepositoryAccess().getDirectionsAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ProtocolStack__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__0__Impl
+	rule__ProtocolStack__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getProtocolStackKeyword_0()); }
+
+	'ProtocolStack' 
+
+{ after(grammarAccess.getProtocolStackAccess().getProtocolStackKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__1__Impl
+	rule__ProtocolStack__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getNameAssignment_1()); }
+(rule__ProtocolStack__NameAssignment_1)
+{ after(grammarAccess.getProtocolStackAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__2__Impl
+	rule__ProtocolStack__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getProtocolStackAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__3__Impl
+	rule__ProtocolStack__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getGroup_3()); }
+(rule__ProtocolStack__Group_3__0)?
+{ after(grammarAccess.getProtocolStackAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__4__Impl
+	rule__ProtocolStack__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getLayersKeyword_4()); }
+
+	'layers' 
+
+{ after(grammarAccess.getProtocolStackAccess().getLayersKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__5__Impl
+	rule__ProtocolStack__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getLeftCurlyBracketKeyword_5()); }
+
+	'{' 
+
+{ after(grammarAccess.getProtocolStackAccess().getLeftCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__6__Impl
+	rule__ProtocolStack__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getLayersAssignment_6()); }
+(rule__ProtocolStack__LayersAssignment_6)
+{ after(grammarAccess.getProtocolStackAccess().getLayersAssignment_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__7__Impl
+	rule__ProtocolStack__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getGroup_7()); }
+(rule__ProtocolStack__Group_7__0)*
+{ after(grammarAccess.getProtocolStackAccess().getGroup_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__8__Impl
+	rule__ProtocolStack__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getRightCurlyBracketKeyword_8()); }
+
+	'}' 
+
+{ after(grammarAccess.getProtocolStackAccess().getRightCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__9__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getRightCurlyBracketKeyword_9()); }
+
+	'}' 
+
+{ after(grammarAccess.getProtocolStackAccess().getRightCurlyBracketKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ProtocolStack__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group_3__0__Impl
+	rule__ProtocolStack__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getAlternativeNamesKeyword_3_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getProtocolStackAccess().getAlternativeNamesKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group_3__1__Impl
+	rule__ProtocolStack__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getLeftCurlyBracketKeyword_3_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getProtocolStackAccess().getLeftCurlyBracketKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group_3__2__Impl
+	rule__ProtocolStack__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getAlternativeNamesAssignment_3_2()); }
+(rule__ProtocolStack__AlternativeNamesAssignment_3_2)
+{ after(grammarAccess.getProtocolStackAccess().getAlternativeNamesAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group_3__3__Impl
+	rule__ProtocolStack__Group_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getGroup_3_3()); }
+(rule__ProtocolStack__Group_3_3__0)*
+{ after(grammarAccess.getProtocolStackAccess().getGroup_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getRightCurlyBracketKeyword_3_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getProtocolStackAccess().getRightCurlyBracketKeyword_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ProtocolStack__Group_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group_3_3__0__Impl
+	rule__ProtocolStack__Group_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getCommaKeyword_3_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getProtocolStackAccess().getCommaKeyword_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getAlternativeNamesAssignment_3_3_1()); }
+(rule__ProtocolStack__AlternativeNamesAssignment_3_3_1)
+{ after(grammarAccess.getProtocolStackAccess().getAlternativeNamesAssignment_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ProtocolStack__Group_7__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group_7__0__Impl
+	rule__ProtocolStack__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group_7__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getCommaKeyword_7_0()); }
+
+	',' 
+
+{ after(grammarAccess.getProtocolStackAccess().getCommaKeyword_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group_7__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group_7__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group_7__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getLayersAssignment_7_1()); }
+(rule__ProtocolStack__LayersAssignment_7_1)
+{ after(grammarAccess.getProtocolStackAccess().getLayersAssignment_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ProtocolLayer__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group__0__Impl
+	rule__ProtocolLayer__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getProtocolLayerKeyword_0()); }
+
+	'ProtocolLayer' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getProtocolLayerKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group__1__Impl
+	rule__ProtocolLayer__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getNameAssignment_1()); }
+(rule__ProtocolLayer__NameAssignment_1)
+{ after(grammarAccess.getProtocolLayerAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group__2__Impl
+	rule__ProtocolLayer__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group__3__Impl
+	rule__ProtocolLayer__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getGroup_3()); }
+(rule__ProtocolLayer__Group_3__0)?
+{ after(grammarAccess.getProtocolLayerAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group__4__Impl
+	rule__ProtocolLayer__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getProtocolKeyword_4()); }
+
+	'protocol' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getProtocolKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group__5__Impl
+	rule__ProtocolLayer__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getProtocolAssignment_5()); }
+(rule__ProtocolLayer__ProtocolAssignment_5)
+{ after(grammarAccess.getProtocolLayerAccess().getProtocolAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group__6__Impl
+	rule__ProtocolLayer__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getGroup_6()); }
+(rule__ProtocolLayer__Group_6__0)?
+{ after(grammarAccess.getProtocolLayerAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group__7__Impl
+	rule__ProtocolLayer__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getGroup_7()); }
+(rule__ProtocolLayer__Group_7__0)?
+{ after(grammarAccess.getProtocolLayerAccess().getGroup_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getRightCurlyBracketKeyword_8()); }
+
+	'}' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getRightCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ProtocolLayer__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_3__0__Impl
+	rule__ProtocolLayer__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getAlternativeNamesKeyword_3_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getAlternativeNamesKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_3__1__Impl
+	rule__ProtocolLayer__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getLeftCurlyBracketKeyword_3_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getLeftCurlyBracketKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_3__2__Impl
+	rule__ProtocolLayer__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getAlternativeNamesAssignment_3_2()); }
+(rule__ProtocolLayer__AlternativeNamesAssignment_3_2)
+{ after(grammarAccess.getProtocolLayerAccess().getAlternativeNamesAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_3__3__Impl
+	rule__ProtocolLayer__Group_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getGroup_3_3()); }
+(rule__ProtocolLayer__Group_3_3__0)*
+{ after(grammarAccess.getProtocolLayerAccess().getGroup_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getRightCurlyBracketKeyword_3_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getRightCurlyBracketKeyword_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ProtocolLayer__Group_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_3_3__0__Impl
+	rule__ProtocolLayer__Group_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getCommaKeyword_3_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getCommaKeyword_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getAlternativeNamesAssignment_3_3_1()); }
+(rule__ProtocolLayer__AlternativeNamesAssignment_3_3_1)
+{ after(grammarAccess.getProtocolLayerAccess().getAlternativeNamesAssignment_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ProtocolLayer__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_6__0__Impl
+	rule__ProtocolLayer__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getIsCarriedByKeyword_6_0()); }
+
+	'isCarriedBy' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getIsCarriedByKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_6__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getIsCarriedByAssignment_6_1()); }
+(rule__ProtocolLayer__IsCarriedByAssignment_6_1)
+{ after(grammarAccess.getProtocolLayerAccess().getIsCarriedByAssignment_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ProtocolLayer__Group_7__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_7__0__Impl
+	rule__ProtocolLayer__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_7__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getCarriesKeyword_7_0()); }
+
+	'carries' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getCarriesKeyword_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group_7__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_7__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_7__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getCarriesAssignment_7_1()); }
+(rule__ProtocolLayer__CarriesAssignment_7_1)
+{ after(grammarAccess.getProtocolLayerAccess().getCarriesAssignment_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Route__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__0__Impl
+	rule__Route__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getRouteKeyword_0()); }
+
+	'Route' 
+
+{ after(grammarAccess.getRouteAccess().getRouteKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__1__Impl
+	rule__Route__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getIdAssignment_1()); }
+(rule__Route__IdAssignment_1)
+{ after(grammarAccess.getRouteAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__2__Impl
+	rule__Route__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getRouteAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__3__Impl
+	rule__Route__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getRouteAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__4__Impl
+	rule__Route__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getNameAssignment_4()); }
+(rule__Route__NameAssignment_4)
+{ after(grammarAccess.getRouteAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__5__Impl
+	rule__Route__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getGroup_5()); }
+(rule__Route__Group_5__0)?
+{ after(grammarAccess.getRouteAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__6__Impl
+	rule__Route__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getGroup_6()); }
+(rule__Route__Group_6__0)?
+{ after(grammarAccess.getRouteAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__7__Impl
+	rule__Route__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getStartKeyword_7()); }
+
+	'start' 
+
+{ after(grammarAccess.getRouteAccess().getStartKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__8__Impl
+	rule__Route__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getStartAssignment_8()); }
+(rule__Route__StartAssignment_8)
+{ after(grammarAccess.getRouteAccess().getStartAssignment_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__9__Impl
+	rule__Route__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getEndKeyword_9()); }
+
+	'end' 
+
+{ after(grammarAccess.getRouteAccess().getEndKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__10__Impl
+	rule__Route__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getEndAssignment_10()); }
+(rule__Route__EndAssignment_10)
+{ after(grammarAccess.getRouteAccess().getEndAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__11__Impl
+	rule__Route__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getGroup_11()); }
+(rule__Route__Group_11__0)?
+{ after(grammarAccess.getRouteAccess().getGroup_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__12__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getRightCurlyBracketKeyword_12()); }
+
+	'}' 
+
+{ after(grammarAccess.getRouteAccess().getRightCurlyBracketKeyword_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Route__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_5__0__Impl
+	rule__Route__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getRouteAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_5__1__Impl
+	rule__Route__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getRouteAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_5__2__Impl
+	rule__Route__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__Route__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getRouteAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_5__3__Impl
+	rule__Route__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getGroup_5_3()); }
+(rule__Route__Group_5_3__0)*
+{ after(grammarAccess.getRouteAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getRouteAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Route__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_5_3__0__Impl
+	rule__Route__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getRouteAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__Route__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getRouteAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Route__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_6__0__Impl
+	rule__Route__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getNumHopsKeyword_6_0()); }
+
+	'numHops' 
+
+{ after(grammarAccess.getRouteAccess().getNumHopsKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_6__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getNumHopsAssignment_6_1()); }
+(rule__Route__NumHopsAssignment_6_1)
+{ after(grammarAccess.getRouteAccess().getNumHopsAssignment_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Route__Group_11__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_11__0__Impl
+	rule__Route__Group_11__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_11__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getHopsKeyword_11_0()); }
+
+	'hops' 
+
+{ after(grammarAccess.getRouteAccess().getHopsKeyword_11_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group_11__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_11__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_11__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getHopsAssignment_11_1()); }
+(rule__Route__HopsAssignment_11_1)
+{ after(grammarAccess.getRouteAccess().getHopsAssignment_11_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__FlowRoute__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__0__Impl
+	rule__FlowRoute__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getFlowRouteKeyword_0()); }
+
+	'FlowRoute' 
+
+{ after(grammarAccess.getFlowRouteAccess().getFlowRouteKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__1__Impl
+	rule__FlowRoute__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getIdAssignment_1()); }
+(rule__FlowRoute__IdAssignment_1)
+{ after(grammarAccess.getFlowRouteAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__2__Impl
+	rule__FlowRoute__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getFlowRouteAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__3__Impl
+	rule__FlowRoute__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getFlowRouteAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__4__Impl
+	rule__FlowRoute__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getNameAssignment_4()); }
+(rule__FlowRoute__NameAssignment_4)
+{ after(grammarAccess.getFlowRouteAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__5__Impl
+	rule__FlowRoute__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getGroup_5()); }
+(rule__FlowRoute__Group_5__0)?
+{ after(grammarAccess.getFlowRouteAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__6__Impl
+	rule__FlowRoute__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getGroup_6()); }
+(rule__FlowRoute__Group_6__0)?
+{ after(grammarAccess.getFlowRouteAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__7__Impl
+	rule__FlowRoute__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getFlowKeyword_7()); }
+
+	'flow' 
+
+{ after(grammarAccess.getFlowRouteAccess().getFlowKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__8__Impl
+	rule__FlowRoute__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getFlowAssignment_8()); }
+(rule__FlowRoute__FlowAssignment_8)
+{ after(grammarAccess.getFlowRouteAccess().getFlowAssignment_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__9__Impl
+	rule__FlowRoute__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getStartKeyword_9()); }
+
+	'start' 
+
+{ after(grammarAccess.getFlowRouteAccess().getStartKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__10__Impl
+	rule__FlowRoute__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getStartAssignment_10()); }
+(rule__FlowRoute__StartAssignment_10)
+{ after(grammarAccess.getFlowRouteAccess().getStartAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__11__Impl
+	rule__FlowRoute__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getEndKeyword_11()); }
+
+	'end' 
+
+{ after(grammarAccess.getFlowRouteAccess().getEndKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__12__Impl
+	rule__FlowRoute__Group__13
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getEndAssignment_12()); }
+(rule__FlowRoute__EndAssignment_12)
+{ after(grammarAccess.getFlowRouteAccess().getEndAssignment_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__13
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__13__Impl
+	rule__FlowRoute__Group__14
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__13__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getGroup_13()); }
+(rule__FlowRoute__Group_13__0)?
+{ after(grammarAccess.getFlowRouteAccess().getGroup_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__14
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__14__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__14__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getRightCurlyBracketKeyword_14()); }
+
+	'}' 
+
+{ after(grammarAccess.getFlowRouteAccess().getRightCurlyBracketKeyword_14()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__FlowRoute__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_5__0__Impl
+	rule__FlowRoute__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getFlowRouteAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_5__1__Impl
+	rule__FlowRoute__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getFlowRouteAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_5__2__Impl
+	rule__FlowRoute__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__FlowRoute__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getFlowRouteAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_5__3__Impl
+	rule__FlowRoute__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getGroup_5_3()); }
+(rule__FlowRoute__Group_5_3__0)*
+{ after(grammarAccess.getFlowRouteAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getFlowRouteAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__FlowRoute__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_5_3__0__Impl
+	rule__FlowRoute__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getFlowRouteAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__FlowRoute__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getFlowRouteAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__FlowRoute__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_6__0__Impl
+	rule__FlowRoute__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getNumHopsKeyword_6_0()); }
+
+	'numHops' 
+
+{ after(grammarAccess.getFlowRouteAccess().getNumHopsKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_6__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getNumHopsAssignment_6_1()); }
+(rule__FlowRoute__NumHopsAssignment_6_1)
+{ after(grammarAccess.getFlowRouteAccess().getNumHopsAssignment_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__FlowRoute__Group_13__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_13__0__Impl
+	rule__FlowRoute__Group_13__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_13__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getHopsKeyword_13_0()); }
+
+	'hops' 
+
+{ after(grammarAccess.getFlowRouteAccess().getHopsKeyword_13_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group_13__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_13__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_13__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getHopsAssignment_13_1()); }
+(rule__FlowRoute__HopsAssignment_13_1)
+{ after(grammarAccess.getFlowRouteAccess().getHopsAssignment_13_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Direction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__0__Impl
+	rule__Direction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getIsDefaultAssignment_0()); }
+(rule__Direction__IsDefaultAssignment_0)?
+{ after(grammarAccess.getDirectionAccess().getIsDefaultAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__1__Impl
+	rule__Direction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getDirectionKeyword_1()); }
+
+	'Direction' 
+
+{ after(grammarAccess.getDirectionAccess().getDirectionKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__2__Impl
+	rule__Direction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getIdAssignment_2()); }
+(rule__Direction__IdAssignment_2)
+{ after(grammarAccess.getDirectionAccess().getIdAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__3__Impl
+	rule__Direction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getLeftCurlyBracketKeyword_3()); }
+
+	'{' 
+
+{ after(grammarAccess.getDirectionAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__4__Impl
+	rule__Direction__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getNameKeyword_4()); }
+
+	'name' 
+
+{ after(grammarAccess.getDirectionAccess().getNameKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__5__Impl
+	rule__Direction__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getNameAssignment_5()); }
+(rule__Direction__NameAssignment_5)
+{ after(grammarAccess.getDirectionAccess().getNameAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__6__Impl
+	rule__Direction__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getGroup_6()); }
+(rule__Direction__Group_6__0)?
+{ after(grammarAccess.getDirectionAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__7__Impl
+	rule__Direction__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getGroup_7()); }
+(rule__Direction__Group_7__0)?
+{ after(grammarAccess.getDirectionAccess().getGroup_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__8__Impl
+	rule__Direction__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getOnNodeKeyword_8()); }
+
+	'onNode' 
+
+{ after(grammarAccess.getDirectionAccess().getOnNodeKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__9__Impl
+	rule__Direction__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getOnNodeAssignment_9()); }
+(rule__Direction__OnNodeAssignment_9)
+{ after(grammarAccess.getDirectionAccess().getOnNodeAssignment_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__10__Impl
+	rule__Direction__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getGroup_10()); }
+(rule__Direction__Group_10__0)?
+{ after(grammarAccess.getDirectionAccess().getGroup_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__11__Impl
+	rule__Direction__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getViaKeyword_11()); }
+
+	'via' 
+
+{ after(grammarAccess.getDirectionAccess().getViaKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__12__Impl
+	rule__Direction__Group__13
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getViaAssignment_12()); }
+(rule__Direction__ViaAssignment_12)
+{ after(grammarAccess.getDirectionAccess().getViaAssignment_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__13
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__13__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__13__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getRightCurlyBracketKeyword_13()); }
+
+	'}' 
+
+{ after(grammarAccess.getDirectionAccess().getRightCurlyBracketKeyword_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Direction__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_6__0__Impl
+	rule__Direction__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getAlternativeNamesKeyword_6_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getDirectionAccess().getAlternativeNamesKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_6__1__Impl
+	rule__Direction__Group_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getLeftCurlyBracketKeyword_6_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getDirectionAccess().getLeftCurlyBracketKeyword_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group_6__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_6__2__Impl
+	rule__Direction__Group_6__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_6__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getAlternativeNamesAssignment_6_2()); }
+(rule__Direction__AlternativeNamesAssignment_6_2)
+{ after(grammarAccess.getDirectionAccess().getAlternativeNamesAssignment_6_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group_6__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_6__3__Impl
+	rule__Direction__Group_6__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_6__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getGroup_6_3()); }
+(rule__Direction__Group_6_3__0)*
+{ after(grammarAccess.getDirectionAccess().getGroup_6_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group_6__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_6__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_6__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getRightCurlyBracketKeyword_6_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getDirectionAccess().getRightCurlyBracketKeyword_6_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Direction__Group_6_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_6_3__0__Impl
+	rule__Direction__Group_6_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_6_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getCommaKeyword_6_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getDirectionAccess().getCommaKeyword_6_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group_6_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_6_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_6_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getAlternativeNamesAssignment_6_3_1()); }
+(rule__Direction__AlternativeNamesAssignment_6_3_1)
+{ after(grammarAccess.getDirectionAccess().getAlternativeNamesAssignment_6_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Direction__Group_7__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_7__0__Impl
+	rule__Direction__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_7__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getDistanceKeyword_7_0()); }
+
+	'distance' 
+
+{ after(grammarAccess.getDirectionAccess().getDistanceKeyword_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group_7__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_7__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_7__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getDistanceAssignment_7_1()); }
+(rule__Direction__DistanceAssignment_7_1)
+{ after(grammarAccess.getDirectionAccess().getDistanceAssignment_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Direction__Group_10__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_10__0__Impl
+	rule__Direction__Group_10__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_10__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getFlowKeyword_10_0()); }
+
+	'flow' 
+
+{ after(grammarAccess.getDirectionAccess().getFlowKeyword_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group_10__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_10__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_10__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getFlowAssignment_10_1()); }
+(rule__Direction__FlowAssignment_10_1)
+{ after(grammarAccess.getDirectionAccess().getFlowAssignment_10_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Hop__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Hop__Group__0__Impl
+	rule__Hop__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getHopKeyword_0()); }
+
+	'Hop' 
+
+{ after(grammarAccess.getHopAccess().getHopKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Hop__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Hop__Group__1__Impl
+	rule__Hop__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getHopAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Hop__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Hop__Group__2__Impl
+	rule__Hop__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getInterfacerefKeyword_2()); }
+
+	'interfaceref' 
+
+{ after(grammarAccess.getHopAccess().getInterfacerefKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Hop__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Hop__Group__3__Impl
+	rule__Hop__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getInterfacerefAssignment_3()); }
+(rule__Hop__InterfacerefAssignment_3)
+{ after(grammarAccess.getHopAccess().getInterfacerefAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Hop__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Hop__Group__4__Impl
+	rule__Hop__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getGroup_4()); }
+(rule__Hop__Group_4__0)?
+{ after(grammarAccess.getHopAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Hop__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Hop__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getHopAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Hop__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Hop__Group_4__0__Impl
+	rule__Hop__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getNextHopKeyword_4_0()); }
+
+	'nextHop' 
+
+{ after(grammarAccess.getHopAccess().getNextHopKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Hop__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Hop__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getNextHopAssignment_4_1()); }
+(rule__Hop__NextHopAssignment_4_1)
+{ after(grammarAccess.getHopAccess().getNextHopAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EIntegerObject__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EIntegerObject__Group__0__Impl
+	rule__EIntegerObject__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EIntegerObject__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEIntegerObjectAccess().getHyphenMinusKeyword_0()); }
+(
+	'-' 
+)?
+{ after(grammarAccess.getEIntegerObjectAccess().getHyphenMinusKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EIntegerObject__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EIntegerObject__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EIntegerObject__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEIntegerObjectAccess().getINTTerminalRuleCall_1()); }
+	RULE_INT
+{ after(grammarAccess.getEIntegerObjectAccess().getINTTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PhysicalNetworkInterface__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__0__Impl
+	rule__PhysicalNetworkInterface__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getPhysicalNetworkInterfaceKeyword_0()); }
+
+	'PhysicalNetworkInterface' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getPhysicalNetworkInterfaceKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__1__Impl
+	rule__PhysicalNetworkInterface__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getIdAssignment_1()); }
+(rule__PhysicalNetworkInterface__IdAssignment_1)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__2__Impl
+	rule__PhysicalNetworkInterface__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__3__Impl
+	rule__PhysicalNetworkInterface__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__4__Impl
+	rule__PhysicalNetworkInterface__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getNameAssignment_4()); }
+(rule__PhysicalNetworkInterface__NameAssignment_4)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__5__Impl
+	rule__PhysicalNetworkInterface__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_5()); }
+(rule__PhysicalNetworkInterface__Group_5__0)?
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__6__Impl
+	rule__PhysicalNetworkInterface__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackKeyword_6()); }
+
+	'usedProtocolStack' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__7__Impl
+	rule__PhysicalNetworkInterface__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackAssignment_7()); }
+(rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_7)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__8__Impl
+	rule__PhysicalNetworkInterface__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_8()); }
+(rule__PhysicalNetworkInterface__Group_8__0)?
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__9__Impl
+	rule__PhysicalNetworkInterface__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getPerformanceKeyword_9()); }
+
+	'performance' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getPerformanceKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__10__Impl
+	rule__PhysicalNetworkInterface__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getPerformanceAssignment_10()); }
+(rule__PhysicalNetworkInterface__PerformanceAssignment_10)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getPerformanceAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__11__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getRightCurlyBracketKeyword_11()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getRightCurlyBracketKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalNetworkInterface__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_5__0__Impl
+	rule__PhysicalNetworkInterface__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_5__1__Impl
+	rule__PhysicalNetworkInterface__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_5__2__Impl
+	rule__PhysicalNetworkInterface__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_5__3__Impl
+	rule__PhysicalNetworkInterface__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_5_3()); }
+(rule__PhysicalNetworkInterface__Group_5_3__0)*
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalNetworkInterface__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_5_3__0__Impl
+	rule__PhysicalNetworkInterface__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PhysicalNetworkInterface__Group_8__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_8__0__Impl
+	rule__PhysicalNetworkInterface__Group_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_8__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesKeyword_8_0()); }
+
+	'addresses' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesKeyword_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_8__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_8__1__Impl
+	rule__PhysicalNetworkInterface__Group_8__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_8__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getLeftCurlyBracketKeyword_8_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getLeftCurlyBracketKeyword_8_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_8__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_8__2__Impl
+	rule__PhysicalNetworkInterface__Group_8__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_8__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesAssignment_8_2()); }
+(rule__PhysicalNetworkInterface__AddressesAssignment_8_2)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesAssignment_8_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_8__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_8__3__Impl
+	rule__PhysicalNetworkInterface__Group_8__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_8__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_8_3()); }
+(rule__PhysicalNetworkInterface__Group_8_3__0)*
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_8_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_8__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_8__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_8__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getRightCurlyBracketKeyword_8_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getRightCurlyBracketKeyword_8_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalNetworkInterface__Group_8_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_8_3__0__Impl
+	rule__PhysicalNetworkInterface__Group_8_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_8_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getCommaKeyword_8_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getCommaKeyword_8_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_8_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_8_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_8_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesAssignment_8_3_1()); }
+(rule__PhysicalNetworkInterface__AddressesAssignment_8_3_1)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesAssignment_8_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__VirtualNetworkInterface__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__0__Impl
+	rule__VirtualNetworkInterface__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getVirtualNetworkInterfaceKeyword_0()); }
+
+	'VirtualNetworkInterface' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getVirtualNetworkInterfaceKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__1__Impl
+	rule__VirtualNetworkInterface__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getIdAssignment_1()); }
+(rule__VirtualNetworkInterface__IdAssignment_1)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__2__Impl
+	rule__VirtualNetworkInterface__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__3__Impl
+	rule__VirtualNetworkInterface__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__4__Impl
+	rule__VirtualNetworkInterface__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getNameAssignment_4()); }
+(rule__VirtualNetworkInterface__NameAssignment_4)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__5__Impl
+	rule__VirtualNetworkInterface__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_5()); }
+(rule__VirtualNetworkInterface__Group_5__0)?
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__6__Impl
+	rule__VirtualNetworkInterface__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackKeyword_6()); }
+
+	'usedProtocolStack' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__7__Impl
+	rule__VirtualNetworkInterface__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackAssignment_7()); }
+(rule__VirtualNetworkInterface__UsedProtocolStackAssignment_7)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__8__Impl
+	rule__VirtualNetworkInterface__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_8()); }
+(rule__VirtualNetworkInterface__Group_8__0)?
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__9__Impl
+	rule__VirtualNetworkInterface__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getPerformanceKeyword_9()); }
+
+	'performance' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getPerformanceKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__10__Impl
+	rule__VirtualNetworkInterface__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getPerformanceAssignment_10()); }
+(rule__VirtualNetworkInterface__PerformanceAssignment_10)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getPerformanceAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__11__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getRightCurlyBracketKeyword_11()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getRightCurlyBracketKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualNetworkInterface__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_5__0__Impl
+	rule__VirtualNetworkInterface__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_5__1__Impl
+	rule__VirtualNetworkInterface__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_5__2__Impl
+	rule__VirtualNetworkInterface__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_5__3__Impl
+	rule__VirtualNetworkInterface__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_5_3()); }
+(rule__VirtualNetworkInterface__Group_5_3__0)*
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualNetworkInterface__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_5_3__0__Impl
+	rule__VirtualNetworkInterface__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__VirtualNetworkInterface__Group_8__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_8__0__Impl
+	rule__VirtualNetworkInterface__Group_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_8__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesKeyword_8_0()); }
+
+	'addresses' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesKeyword_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_8__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_8__1__Impl
+	rule__VirtualNetworkInterface__Group_8__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_8__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getLeftCurlyBracketKeyword_8_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getLeftCurlyBracketKeyword_8_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_8__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_8__2__Impl
+	rule__VirtualNetworkInterface__Group_8__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_8__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesAssignment_8_2()); }
+(rule__VirtualNetworkInterface__AddressesAssignment_8_2)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesAssignment_8_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_8__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_8__3__Impl
+	rule__VirtualNetworkInterface__Group_8__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_8__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_8_3()); }
+(rule__VirtualNetworkInterface__Group_8_3__0)*
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_8_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_8__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_8__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_8__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getRightCurlyBracketKeyword_8_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getRightCurlyBracketKeyword_8_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualNetworkInterface__Group_8_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_8_3__0__Impl
+	rule__VirtualNetworkInterface__Group_8_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_8_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getCommaKeyword_8_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getCommaKeyword_8_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_8_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_8_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_8_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesAssignment_8_3_1()); }
+(rule__VirtualNetworkInterface__AddressesAssignment_8_3_1)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesAssignment_8_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+rule__NetworkInfrastructure__DataCenterNameAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getDataCenterNameEStringParserRuleCall_3_0()); }
+	ruleEString{ after(grammarAccess.getNetworkInfrastructureAccess().getDataCenterNameEStringParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__DataCenterAltNameAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getDataCenterAltNameEStringParserRuleCall_5_0()); }
+	ruleEString{ after(grammarAccess.getNetworkInfrastructureAccess().getDataCenterAltNameEStringParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__TrafficAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getTrafficNetworkTrafficParserRuleCall_7_0()); }
+	ruleNetworkTraffic{ after(grammarAccess.getNetworkInfrastructureAccess().getTrafficNetworkTrafficParserRuleCall_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__StructureAssignment_9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getStructureNetworkStructureParserRuleCall_9_0()); }
+	ruleNetworkStructure{ after(grammarAccess.getNetworkInfrastructureAccess().getStructureNetworkStructureParserRuleCall_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__ConfigurationAssignment_11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getConfigurationNetworkConfigurationParserRuleCall_11_0()); }
+	ruleNetworkConfiguration{ after(grammarAccess.getNetworkInfrastructureAccess().getConfigurationNetworkConfigurationParserRuleCall_11_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__ParamsAssignment_12_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getParamsExperimentParamParserRuleCall_12_2_0()); }
+	ruleExperimentParam{ after(grammarAccess.getNetworkInfrastructureAccess().getParamsExperimentParamParserRuleCall_12_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__ParamsAssignment_12_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getParamsExperimentParamParserRuleCall_12_3_1_0()); }
+	ruleExperimentParam{ after(grammarAccess.getNetworkInfrastructureAccess().getParamsExperimentParamParserRuleCall_12_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getIsUpEBooleanParserRuleCall_4_0()); }
+	ruleEBoolean{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getIsUpEBooleanParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_6_0()); }
+	ruleDependency{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getMTUEIntParserRuleCall_8_0()); }
+	ruleEInt{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getMTUEIntParserRuleCall_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getInterfaceSpeedSpeedUnitParserRuleCall_10_0()); }
+	ruleSpeedUnit{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getInterfaceSpeedSpeedUnitParserRuleCall_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getIsUpEBooleanParserRuleCall_4_0()); }
+	ruleEBoolean{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getIsUpEBooleanParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_6_0()); }
+	ruleDependency{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getMTUEIntParserRuleCall_8_0()); }
+	ruleEInt{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getMTUEIntParserRuleCall_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getInterfaceSpeedSpeedUnitParserRuleCall_10_0()); }
+	ruleSpeedUnit{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getInterfaceSpeedSpeedUnitParserRuleCall_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__PropagationDelayAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getPropagationDelayDependencyParserRuleCall_4_0()); }
+	ruleDependency{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getPropagationDelayDependencyParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getMaxSupportedBandwidthDependencyParserRuleCall_5_1_0()); }
+	ruleDependency{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getMaxSupportedBandwidthDependencyParserRuleCall_5_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getPropagationDelayDependencyParserRuleCall_4_0()); }
+	ruleDependency{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getPropagationDelayDependencyParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getMaxSupportedBandwidthDependencyParserRuleCall_5_1_0()); }
+	ruleDependency{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getMaxSupportedBandwidthDependencyParserRuleCall_5_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntermediateNodePerfSpec__DataplaneAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getDataplaneDataPlanePerfSpecParserRuleCall_3_0()); }
+	ruleDataPlanePerfSpec{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getDataplaneDataPlanePerfSpecParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntermediateNodePerfSpec__ControlplaneAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getControlplaneControlPlanePerfSpecParserRuleCall_5_0()); }
+	ruleControlPlanePerfSpec{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getControlplaneControlPlanePerfSpecParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getProcessingLatencyDependencyParserRuleCall_3_0()); }
+	ruleDependency{ after(grammarAccess.getControlPlanePerfSpecAccess().getProcessingLatencyDependencyParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getProcessingBandwidthReqPSDependencyParserRuleCall_5_0()); }
+	ruleDependency{ after(grammarAccess.getControlPlanePerfSpecAccess().getProcessingBandwidthReqPSDependencyParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_7_0()); }
+	ruleDependency{ after(grammarAccess.getControlPlanePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__ForwardingLatencyAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingLatencyDependencyParserRuleCall_3_0()); }
+	ruleDependency{ after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingLatencyDependencyParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthPPSDependencyParserRuleCall_5_0()); }
+	ruleDependency{ after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthPPSDependencyParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthBPSDependencyParserRuleCall_7_0()); }
+	ruleDependency{ after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthBPSDependencyParserRuleCall_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_9_0()); }
+	ruleDependency{ after(grammarAccess.getDataPlanePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getSoftwareLayersDelayDependencyParserRuleCall_3_0()); }
+	ruleDependency{ after(grammarAccess.getEndNodePerfSpecAccess().getSoftwareLayersDelayDependencyParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__DataplaneAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getDataplaneDataPlanePerfSpecParserRuleCall_4_1_0()); }
+	ruleDataPlanePerfSpec{ after(grammarAccess.getEndNodePerfSpecAccess().getDataplaneDataPlanePerfSpecParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__ControlplaneAssignment_5_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getControlplaneControlPlanePerfSpecParserRuleCall_5_1_0()); }
+	ruleControlPlanePerfSpec{ after(grammarAccess.getEndNodePerfSpecAccess().getControlplaneControlPlanePerfSpecParserRuleCall_5_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__FlowsAssignment_3_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getFlowsFlowParserRuleCall_3_2_0()); }
+	ruleFlow{ after(grammarAccess.getNetworkTrafficAccess().getFlowsFlowParserRuleCall_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__FlowsAssignment_3_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getFlowsFlowParserRuleCall_3_3_1_0()); }
+	ruleFlow{ after(grammarAccess.getNetworkTrafficAccess().getFlowsFlowParserRuleCall_3_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__SoftwareAssignment_4_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getSoftwareSoftwareComponentParserRuleCall_4_2_0()); }
+	ruleSoftwareComponent{ after(grammarAccess.getNetworkTrafficAccess().getSoftwareSoftwareComponentParserRuleCall_4_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__SoftwareAssignment_4_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getSoftwareSoftwareComponentParserRuleCall_4_3_1_0()); }
+	ruleSoftwareComponent{ after(grammarAccess.getNetworkTrafficAccess().getSoftwareSoftwareComponentParserRuleCall_4_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__NodesAssignment_3_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getNodesNodeParserRuleCall_3_2_0()); }
+	ruleNode{ after(grammarAccess.getNetworkStructureAccess().getNodesNodeParserRuleCall_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__NodesAssignment_3_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getNodesNodeParserRuleCall_3_3_1_0()); }
+	ruleNode{ after(grammarAccess.getNetworkStructureAccess().getNodesNodeParserRuleCall_3_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__LinksAssignment_4_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getLinksLinkParserRuleCall_4_2_0()); }
+	ruleLink{ after(grammarAccess.getNetworkStructureAccess().getLinksLinkParserRuleCall_4_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__LinksAssignment_4_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getLinksLinkParserRuleCall_4_3_1_0()); }
+	ruleLink{ after(grammarAccess.getNetworkStructureAccess().getLinksLinkParserRuleCall_4_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkConfiguration__ProtocolsAndStacksAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getProtocolsAndStacksProtocolsRepositoryParserRuleCall_3_0()); }
+	ruleProtocolsRepository{ after(grammarAccess.getNetworkConfigurationAccess().getProtocolsAndStacksProtocolsRepositoryParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkConfiguration__RoutesAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getRoutesRoutesRepositoryParserRuleCall_5_0()); }
+	ruleRoutesRepository{ after(grammarAccess.getNetworkConfigurationAccess().getRoutesRoutesRepositoryParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExperimentParam__NameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExperimentParamAccess().getNameEStringParserRuleCall_1_0()); }
+	ruleEString{ after(grammarAccess.getExperimentParamAccess().getNameEStringParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExperimentParam__ValueAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExperimentParamAccess().getValueEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getExperimentParamAccess().getValueEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getSoftwareComponentAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getSoftwareComponentAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__DeployedOnAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getDeployedOnNodeCrossReference_7_0()); }
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getDeployedOnNodeEStringParserRuleCall_7_0_1()); }
+	ruleEString{ after(grammarAccess.getSoftwareComponentAccess().getDeployedOnNodeEStringParserRuleCall_7_0_1()); }
+)
+{ after(grammarAccess.getSoftwareComponentAccess().getDeployedOnNodeCrossReference_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__TrafficSourcesAssignment_8_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesTrafficSourceParserRuleCall_8_2_0()); }
+	ruleTrafficSource{ after(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesTrafficSourceParserRuleCall_8_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__TrafficSourcesAssignment_8_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesTrafficSourceParserRuleCall_8_3_1_0()); }
+	ruleTrafficSource{ after(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesTrafficSourceParserRuleCall_8_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__AddressAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getAddressEStringParserRuleCall_3_1_0()); }
+	ruleEString{ after(grammarAccess.getEntityAddressAccess().getAddressEStringParserRuleCall_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__AddressGivenByAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getAddressGivenByNetworkProtocolCrossReference_4_1_0()); }
+(
+{ before(grammarAccess.getEntityAddressAccess().getAddressGivenByNetworkProtocolEStringParserRuleCall_4_1_0_1()); }
+	ruleEString{ after(grammarAccess.getEntityAddressAccess().getAddressGivenByNetworkProtocolEStringParserRuleCall_4_1_0_1()); }
+)
+{ after(grammarAccess.getEntityAddressAccess().getAddressGivenByNetworkProtocolCrossReference_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__StartStateAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getStartStateStartStateKeyword_0_0()); }
+(
+{ before(grammarAccess.getONOFFFlowAccess().getStartStateStartStateKeyword_0_0()); }
+
+	'startState' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getStartStateStartStateKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getONOFFFlowAccess().getStartStateStartStateKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__IdAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getIdIDTerminalRuleCall_2_0()); }
+	RULE_ID{ after(grammarAccess.getONOFFFlowAccess().getIdIDTerminalRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__NameAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getNameEStringParserRuleCall_5_0()); }
+	ruleEString{ after(grammarAccess.getONOFFFlowAccess().getNameEStringParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__AlternativeNamesAssignment_6_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getAlternativeNamesEStringParserRuleCall_6_2_0()); }
+	ruleEString{ after(grammarAccess.getONOFFFlowAccess().getAlternativeNamesEStringParserRuleCall_6_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__AlternativeNamesAssignment_6_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getAlternativeNamesEStringParserRuleCall_6_3_1_0()); }
+	ruleEString{ after(grammarAccess.getONOFFFlowAccess().getAlternativeNamesEStringParserRuleCall_6_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentSoftwareComponentCrossReference_7_1_0()); }
+(
+{ before(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentSoftwareComponentEStringParserRuleCall_7_1_0_1()); }
+	ruleEString{ after(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentSoftwareComponentEStringParserRuleCall_7_1_0_1()); }
+)
+{ after(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentSoftwareComponentCrossReference_7_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentSoftwareComponentCrossReference_8_1_0()); }
+(
+{ before(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentSoftwareComponentEStringParserRuleCall_8_1_0_1()); }
+	ruleEString{ after(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentSoftwareComponentEStringParserRuleCall_8_1_0_1()); }
+)
+{ after(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentSoftwareComponentCrossReference_8_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__DestinationAddressesAssignment_9_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_9_2_0()); }
+	ruleEntityAddress{ after(grammarAccess.getONOFFFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_9_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__DestinationAddressesAssignment_9_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_9_3_1_0()); }
+	ruleEntityAddress{ after(grammarAccess.getONOFFFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_9_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__ONstateIATAssignment_11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getONstateIATDependencyParserRuleCall_11_0()); }
+	ruleDependency{ after(grammarAccess.getONOFFFlowAccess().getONstateIATDependencyParserRuleCall_11_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__ONstateDurationAssignment_13
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getONstateDurationDependencyParserRuleCall_13_0()); }
+	ruleDependency{ after(grammarAccess.getONOFFFlowAccess().getONstateDurationDependencyParserRuleCall_13_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__OFFstateDurationAssignment_15
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getOFFstateDurationDependencyParserRuleCall_15_0()); }
+	ruleDependency{ after(grammarAccess.getONOFFFlowAccess().getOFFstateDurationDependencyParserRuleCall_15_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__PacketLengthAssignment_17
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getPacketLengthDependencyParserRuleCall_17_0()); }
+	ruleDependency{ after(grammarAccess.getONOFFFlowAccess().getPacketLengthDependencyParserRuleCall_17_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getGenericFlowAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getGenericFlowAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getGenericFlowAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getGenericFlowAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__DestinationSoftwareComponentAssignment_6_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentSoftwareComponentCrossReference_6_1_0()); }
+(
+{ before(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentSoftwareComponentEStringParserRuleCall_6_1_0_1()); }
+	ruleEString{ after(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentSoftwareComponentEStringParserRuleCall_6_1_0_1()); }
+)
+{ after(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentSoftwareComponentCrossReference_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__SourceSoftwareComponentAssignment_7_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentSoftwareComponentCrossReference_7_1_0()); }
+(
+{ before(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentSoftwareComponentEStringParserRuleCall_7_1_0_1()); }
+	ruleEString{ after(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentSoftwareComponentEStringParserRuleCall_7_1_0_1()); }
+)
+{ after(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentSoftwareComponentCrossReference_7_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__DestinationAddressesAssignment_8_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_8_2_0()); }
+	ruleEntityAddress{ after(grammarAccess.getGenericFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_8_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__DestinationAddressesAssignment_8_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_8_3_1_0()); }
+	ruleEntityAddress{ after(grammarAccess.getGenericFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_8_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__DataSizeAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDataSizeDependencyParserRuleCall_10_0()); }
+	ruleDependency{ after(grammarAccess.getGenericFlowAccess().getDataSizeDependencyParserRuleCall_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__DeliveryGuaranteedAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getDeliveryGuaranteedDeliveryGuaranteedKeyword_0_0()); }
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getDeliveryGuaranteedDeliveryGuaranteedKeyword_0_0()); }
+
+	'deliveryGuaranteed' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getDeliveryGuaranteedDeliveryGuaranteedKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getNetworkProtocolAccess().getDeliveryGuaranteedDeliveryGuaranteedKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__NameAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getNameEStringParserRuleCall_2_0()); }
+	ruleEString{ after(grammarAccess.getNetworkProtocolAccess().getNameEStringParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__AlternativeNamesAssignment_4_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesEStringParserRuleCall_4_2_0()); }
+	ruleEString{ after(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesEStringParserRuleCall_4_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__AlternativeNamesAssignment_4_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesEStringParserRuleCall_4_3_1_0()); }
+	ruleEString{ after(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesEStringParserRuleCall_4_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__MtuAssignment_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getMtuEIntParserRuleCall_6_0()); }
+	ruleEInt{ after(grammarAccess.getNetworkProtocolAccess().getMtuEIntParserRuleCall_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__HeadersLengthAssignment_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getHeadersLengthEIntParserRuleCall_8_0()); }
+	ruleEInt{ after(grammarAccess.getNetworkProtocolAccess().getHeadersLengthEIntParserRuleCall_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__DataUnitLengthAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getDataUnitLengthEIntParserRuleCall_10_0()); }
+	ruleEInt{ after(grammarAccess.getNetworkProtocolAccess().getDataUnitLengthEIntParserRuleCall_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__ConnectionlessAssignment_11_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getConnectionlessEBooleanParserRuleCall_11_1_0()); }
+	ruleEBoolean{ after(grammarAccess.getNetworkProtocolAccess().getConnectionlessEBooleanParserRuleCall_11_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__ValueAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getValueEDoubleParserRuleCall_3_0()); }
+	ruleEDouble{ after(grammarAccess.getConstantDoubleVariableAccess().getValueEDoubleParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__UnitAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getUnitDNIUnitParserRuleCall_4_1_0()); }
+	ruleDNIUnit{ after(grammarAccess.getConstantDoubleVariableAccess().getUnitDNIUnitParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__ValueAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getValueELongParserRuleCall_3_0()); }
+	ruleELong{ after(grammarAccess.getConstantLongVariableAccess().getValueELongParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__UnitAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getUnitDNIUnitParserRuleCall_4_1_0()); }
+	ruleDNIUnit{ after(grammarAccess.getConstantLongVariableAccess().getUnitDNIUnitParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__UnitAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getUnitDNIUnitParserRuleCall_2_1_0()); }
+	ruleDNIUnit{ after(grammarAccess.getRandomVariableAccess().getUnitDNIUnitParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__CdfAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getCdfFunctionParserRuleCall_4_0()); }
+	ruleFunction{ after(grammarAccess.getRandomVariableAccess().getCdfFunctionParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__NumArgsAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getNumArgsEIntParserRuleCall_3_0()); }
+	ruleEInt{ after(grammarAccess.getContinuousFunctionAccess().getNumArgsEIntParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__EquationAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getEquationEStringParserRuleCall_5_0()); }
+	ruleEString{ after(grammarAccess.getContinuousFunctionAccess().getEquationEStringParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__UnitAssignment_6_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getUnitDNIUnitParserRuleCall_6_1_0()); }
+	ruleDNIUnit{ after(grammarAccess.getContinuousFunctionAccess().getUnitDNIUnitParserRuleCall_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__NumArgsAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getNumArgsEIntParserRuleCall_3_0()); }
+	ruleEInt{ after(grammarAccess.getDiscreteFunctionAccess().getNumArgsEIntParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__UnitAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getUnitDNIUnitParserRuleCall_4_1_0()); }
+	ruleDNIUnit{ after(grammarAccess.getDiscreteFunctionAccess().getUnitDNIUnitParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__XAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getXDataSeriesParserRuleCall_7_0()); }
+	ruleDataSeries{ after(grammarAccess.getDiscreteFunctionAccess().getXDataSeriesParserRuleCall_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__XAssignment_8_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getXDataSeriesParserRuleCall_8_1_0()); }
+	ruleDataSeries{ after(grammarAccess.getDiscreteFunctionAccess().getXDataSeriesParserRuleCall_8_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__YAssignment_11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getYDataSeriesParserRuleCall_11_0()); }
+	ruleDataSeries{ after(grammarAccess.getDiscreteFunctionAccess().getYDataSeriesParserRuleCall_11_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__PrefixAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getPrefixUnitPrefixEnumRuleCall_3_0()); }
+	ruleUnitPrefix{ after(grammarAccess.getSpeedUnitAccess().getPrefixUnitPrefixEnumRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__ValueAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getValueEFloatParserRuleCall_5_0()); }
+	ruleEFloat{ after(grammarAccess.getSpeedUnitAccess().getValueEFloatParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__UnitAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getUnitSpeedEnumRuleCall_7_0()); }
+	ruleSpeed{ after(grammarAccess.getSpeedUnitAccess().getUnitSpeedEnumRuleCall_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__DataAssignment_3_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getDataEDoubleParserRuleCall_3_2_0()); }
+	ruleEDouble{ after(grammarAccess.getDataSeriesAccess().getDataEDoubleParserRuleCall_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__DataAssignment_3_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getDataEDoubleParserRuleCall_3_3_1_0()); }
+	ruleEDouble{ after(grammarAccess.getDataSeriesAccess().getDataEDoubleParserRuleCall_3_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getTrafficSourceAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getTrafficSourceAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getTrafficSourceAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getTrafficSourceAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__AddressesAssignment_6_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAddressesEntityAddressParserRuleCall_6_2_0()); }
+	ruleEntityAddress{ after(grammarAccess.getTrafficSourceAccess().getAddressesEntityAddressParserRuleCall_6_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__AddressesAssignment_6_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAddressesEntityAddressParserRuleCall_6_3_1_0()); }
+	ruleEntityAddress{ after(grammarAccess.getTrafficSourceAccess().getAddressesEntityAddressParserRuleCall_6_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__WorkloadAssignment_9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getWorkloadWorkloadParserRuleCall_9_0()); }
+	ruleWorkload{ after(grammarAccess.getTrafficSourceAccess().getWorkloadWorkloadParserRuleCall_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__WorkloadAssignment_10_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getWorkloadWorkloadParserRuleCall_10_1_0()); }
+	ruleWorkload{ after(grammarAccess.getTrafficSourceAccess().getWorkloadWorkloadParserRuleCall_10_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__ActionsAssignment_3_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getActionsAbstractActionParserRuleCall_3_2_0()); }
+	ruleAbstractAction{ after(grammarAccess.getGenericWorkloadAccess().getActionsAbstractActionParserRuleCall_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__ActionsAssignment_3_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getActionsAbstractActionParserRuleCall_3_3_1_0()); }
+	ruleAbstractAction{ after(grammarAccess.getGenericWorkloadAccess().getActionsAbstractActionParserRuleCall_3_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__InternAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getInternAbstractActionParserRuleCall_4_0()); }
+	ruleAbstractAction{ after(grammarAccess.getBranchActionAccess().getInternAbstractActionParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__InternAssignment_5_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getInternAbstractActionParserRuleCall_5_1_0()); }
+	ruleAbstractAction{ after(grammarAccess.getBranchActionAccess().getInternAbstractActionParserRuleCall_5_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LoopAction__InternAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLoopActionAccess().getInternAbstractActionParserRuleCall_3_0()); }
+	ruleAbstractAction{ after(grammarAccess.getLoopActionAccess().getInternAbstractActionParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LoopAction__NumIterationsAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLoopActionAccess().getNumIterationsDependencyParserRuleCall_5_0()); }
+	ruleDependency{ after(grammarAccess.getLoopActionAccess().getNumIterationsDependencyParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__InternAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getInternAbstractActionParserRuleCall_4_0()); }
+	ruleAbstractAction{ after(grammarAccess.getSequenceActionAccess().getInternAbstractActionParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__InternAssignment_5_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getInternAbstractActionParserRuleCall_5_1_0()); }
+	ruleAbstractAction{ after(grammarAccess.getSequenceActionAccess().getInternAbstractActionParserRuleCall_5_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TransmitAction__FlowAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTransmitActionAccess().getFlowFlowCrossReference_3_0()); }
+(
+{ before(grammarAccess.getTransmitActionAccess().getFlowFlowEStringParserRuleCall_3_0_1()); }
+	ruleEString{ after(grammarAccess.getTransmitActionAccess().getFlowFlowEStringParserRuleCall_3_0_1()); }
+)
+{ after(grammarAccess.getTransmitActionAccess().getFlowFlowCrossReference_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WaitAction__WaitTimeAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWaitActionAccess().getWaitTimeDependencyParserRuleCall_3_0()); }
+	ruleDependency{ after(grammarAccess.getWaitActionAccess().getWaitTimeDependencyParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getVirtualNodeAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getVirtualNodeAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getVirtualNodeAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getVirtualNodeAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__SoftwareAssignment_6_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentCrossReference_6_2_0()); }
+(
+{ before(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_2_0_1()); }
+	ruleEString{ after(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_2_0_1()); }
+)
+{ after(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentCrossReference_6_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__SoftwareAssignment_6_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentCrossReference_6_3_1_0()); }
+(
+{ before(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_3_1_0_1()); }
+	ruleEString{ after(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_3_1_0_1()); }
+)
+{ after(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentCrossReference_6_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__HostedOnAssignment_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getHostedOnPhysicalNodeCrossReference_8_0()); }
+(
+{ before(grammarAccess.getVirtualNodeAccess().getHostedOnPhysicalNodeEStringParserRuleCall_8_0_1()); }
+	ruleEString{ after(grammarAccess.getVirtualNodeAccess().getHostedOnPhysicalNodeEStringParserRuleCall_8_0_1()); }
+)
+{ after(grammarAccess.getVirtualNodeAccess().getHostedOnPhysicalNodeCrossReference_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__PerformanceAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getPerformancePerformanceSpecificationParserRuleCall_10_0()); }
+	rulePerformanceSpecification{ after(grammarAccess.getVirtualNodeAccess().getPerformancePerformanceSpecificationParserRuleCall_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__InterfacesAssignment_11_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getInterfacesVirtualNetworkInterfaceParserRuleCall_11_2_0()); }
+	ruleVirtualNetworkInterface{ after(grammarAccess.getVirtualNodeAccess().getInterfacesVirtualNetworkInterfaceParserRuleCall_11_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__InterfacesAssignment_11_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getInterfacesVirtualNetworkInterfaceParserRuleCall_11_3_1_0()); }
+	ruleVirtualNetworkInterface{ after(grammarAccess.getVirtualNodeAccess().getInterfacesVirtualNetworkInterfaceParserRuleCall_11_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getPhysicalNodeAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getPhysicalNodeAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__SoftwareAssignment_6_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentCrossReference_6_2_0()); }
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_2_0_1()); }
+	ruleEString{ after(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_2_0_1()); }
+)
+{ after(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentCrossReference_6_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__SoftwareAssignment_6_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentCrossReference_6_3_1_0()); }
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_3_1_0_1()); }
+	ruleEString{ after(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_3_1_0_1()); }
+)
+{ after(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentCrossReference_6_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__HostsAssignment_7_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeCrossReference_7_2_0()); }
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeEStringParserRuleCall_7_2_0_1()); }
+	ruleEString{ after(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeEStringParserRuleCall_7_2_0_1()); }
+)
+{ after(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeCrossReference_7_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__HostsAssignment_7_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeCrossReference_7_3_1_0()); }
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeEStringParserRuleCall_7_3_1_0_1()); }
+	ruleEString{ after(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeEStringParserRuleCall_7_3_1_0_1()); }
+)
+{ after(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeCrossReference_7_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__PerformanceAssignment_9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getPerformancePerformanceSpecificationParserRuleCall_9_0()); }
+	rulePerformanceSpecification{ after(grammarAccess.getPhysicalNodeAccess().getPerformancePerformanceSpecificationParserRuleCall_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__InterfacesAssignment_10_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getInterfacesNetworkInterfaceParserRuleCall_10_2_0()); }
+	ruleNetworkInterface{ after(grammarAccess.getPhysicalNodeAccess().getInterfacesNetworkInterfaceParserRuleCall_10_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__InterfacesAssignment_10_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getInterfacesNetworkInterfaceParserRuleCall_10_3_1_0()); }
+	ruleNetworkInterface{ after(grammarAccess.getPhysicalNodeAccess().getInterfacesNetworkInterfaceParserRuleCall_10_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getPhysicalLinkAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getPhysicalLinkAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__ConnectsAssignment_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceCrossReference_8_0()); }
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceEStringParserRuleCall_8_0_1()); }
+	ruleEString{ after(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceEStringParserRuleCall_8_0_1()); }
+)
+{ after(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceCrossReference_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__ConnectsAssignment_9_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceCrossReference_9_1_0()); }
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceEStringParserRuleCall_9_1_0_1()); }
+	ruleEString{ after(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceEStringParserRuleCall_9_1_0_1()); }
+)
+{ after(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceCrossReference_9_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__PerformanceAssignment_12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getPerformancePerformanceSpecificationParserRuleCall_12_0()); }
+	rulePerformanceSpecification{ after(grammarAccess.getPhysicalLinkAccess().getPerformancePerformanceSpecificationParserRuleCall_12_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getVirtualLinkAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getVirtualLinkAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getVirtualLinkAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getVirtualLinkAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__ConnectsAssignment_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceCrossReference_8_0()); }
+(
+{ before(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceEStringParserRuleCall_8_0_1()); }
+	ruleEString{ after(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceEStringParserRuleCall_8_0_1()); }
+)
+{ after(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceCrossReference_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__ConnectsAssignment_9_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceCrossReference_9_1_0()); }
+(
+{ before(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceEStringParserRuleCall_9_1_0_1()); }
+	ruleEString{ after(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceEStringParserRuleCall_9_1_0_1()); }
+)
+{ after(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceCrossReference_9_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__PerformanceAssignment_12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getPerformancePerformanceSpecificationParserRuleCall_12_0()); }
+	rulePerformanceSpecification{ after(grammarAccess.getVirtualLinkAccess().getPerformancePerformanceSpecificationParserRuleCall_12_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__StacksAssignment_2_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getStacksProtocolStackParserRuleCall_2_2_0()); }
+	ruleProtocolStack{ after(grammarAccess.getProtocolsRepositoryAccess().getStacksProtocolStackParserRuleCall_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__StacksAssignment_2_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getStacksProtocolStackParserRuleCall_2_3_1_0()); }
+	ruleProtocolStack{ after(grammarAccess.getProtocolsRepositoryAccess().getStacksProtocolStackParserRuleCall_2_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__ProtocolsAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getProtocolsNetworkProtocolParserRuleCall_5_0()); }
+	ruleNetworkProtocol{ after(grammarAccess.getProtocolsRepositoryAccess().getProtocolsNetworkProtocolParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__ProtocolsAssignment_6_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getProtocolsNetworkProtocolParserRuleCall_6_1_0()); }
+	ruleNetworkProtocol{ after(grammarAccess.getProtocolsRepositoryAccess().getProtocolsNetworkProtocolParserRuleCall_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__RoutesAssignment_3_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRoutesRouteParserRuleCall_3_2_0()); }
+	ruleRoute{ after(grammarAccess.getRoutesRepositoryAccess().getRoutesRouteParserRuleCall_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__RoutesAssignment_3_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRoutesRouteParserRuleCall_3_3_1_0()); }
+	ruleRoute{ after(grammarAccess.getRoutesRepositoryAccess().getRoutesRouteParserRuleCall_3_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__FlowRoutesAssignment_4_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesFlowRouteParserRuleCall_4_2_0()); }
+	ruleFlowRoute{ after(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesFlowRouteParserRuleCall_4_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__FlowRoutesAssignment_4_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesFlowRouteParserRuleCall_4_3_1_0()); }
+	ruleFlowRoute{ after(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesFlowRouteParserRuleCall_4_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__DirectionsAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getDirectionsDirectionParserRuleCall_5_2_0()); }
+	ruleDirection{ after(grammarAccess.getRoutesRepositoryAccess().getDirectionsDirectionParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__DirectionsAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getDirectionsDirectionParserRuleCall_5_3_1_0()); }
+	ruleDirection{ after(grammarAccess.getRoutesRepositoryAccess().getDirectionsDirectionParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__NameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getNameEStringParserRuleCall_1_0()); }
+	ruleEString{ after(grammarAccess.getProtocolStackAccess().getNameEStringParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__AlternativeNamesAssignment_3_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getAlternativeNamesEStringParserRuleCall_3_2_0()); }
+	ruleEString{ after(grammarAccess.getProtocolStackAccess().getAlternativeNamesEStringParserRuleCall_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__AlternativeNamesAssignment_3_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getAlternativeNamesEStringParserRuleCall_3_3_1_0()); }
+	ruleEString{ after(grammarAccess.getProtocolStackAccess().getAlternativeNamesEStringParserRuleCall_3_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__LayersAssignment_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getLayersProtocolLayerParserRuleCall_6_0()); }
+	ruleProtocolLayer{ after(grammarAccess.getProtocolStackAccess().getLayersProtocolLayerParserRuleCall_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__LayersAssignment_7_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getLayersProtocolLayerParserRuleCall_7_1_0()); }
+	ruleProtocolLayer{ after(grammarAccess.getProtocolStackAccess().getLayersProtocolLayerParserRuleCall_7_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__NameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getNameEStringParserRuleCall_1_0()); }
+	ruleEString{ after(grammarAccess.getProtocolLayerAccess().getNameEStringParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__AlternativeNamesAssignment_3_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getAlternativeNamesEStringParserRuleCall_3_2_0()); }
+	ruleEString{ after(grammarAccess.getProtocolLayerAccess().getAlternativeNamesEStringParserRuleCall_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__AlternativeNamesAssignment_3_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getAlternativeNamesEStringParserRuleCall_3_3_1_0()); }
+	ruleEString{ after(grammarAccess.getProtocolLayerAccess().getAlternativeNamesEStringParserRuleCall_3_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__ProtocolAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getProtocolNetworkProtocolCrossReference_5_0()); }
+(
+{ before(grammarAccess.getProtocolLayerAccess().getProtocolNetworkProtocolEStringParserRuleCall_5_0_1()); }
+	ruleEString{ after(grammarAccess.getProtocolLayerAccess().getProtocolNetworkProtocolEStringParserRuleCall_5_0_1()); }
+)
+{ after(grammarAccess.getProtocolLayerAccess().getProtocolNetworkProtocolCrossReference_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__IsCarriedByAssignment_6_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getIsCarriedByProtocolLayerCrossReference_6_1_0()); }
+(
+{ before(grammarAccess.getProtocolLayerAccess().getIsCarriedByProtocolLayerEStringParserRuleCall_6_1_0_1()); }
+	ruleEString{ after(grammarAccess.getProtocolLayerAccess().getIsCarriedByProtocolLayerEStringParserRuleCall_6_1_0_1()); }
+)
+{ after(grammarAccess.getProtocolLayerAccess().getIsCarriedByProtocolLayerCrossReference_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__CarriesAssignment_7_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getCarriesProtocolLayerCrossReference_7_1_0()); }
+(
+{ before(grammarAccess.getProtocolLayerAccess().getCarriesProtocolLayerEStringParserRuleCall_7_1_0_1()); }
+	ruleEString{ after(grammarAccess.getProtocolLayerAccess().getCarriesProtocolLayerEStringParserRuleCall_7_1_0_1()); }
+)
+{ after(grammarAccess.getProtocolLayerAccess().getCarriesProtocolLayerCrossReference_7_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getRouteAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getRouteAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getRouteAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getRouteAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__NumHopsAssignment_6_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getNumHopsEIntegerObjectParserRuleCall_6_1_0()); }
+	ruleEIntegerObject{ after(grammarAccess.getRouteAccess().getNumHopsEIntegerObjectParserRuleCall_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__StartAssignment_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getStartNetworkInterfaceCrossReference_8_0()); }
+(
+{ before(grammarAccess.getRouteAccess().getStartNetworkInterfaceEStringParserRuleCall_8_0_1()); }
+	ruleEString{ after(grammarAccess.getRouteAccess().getStartNetworkInterfaceEStringParserRuleCall_8_0_1()); }
+)
+{ after(grammarAccess.getRouteAccess().getStartNetworkInterfaceCrossReference_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__EndAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getEndNetworkInterfaceCrossReference_10_0()); }
+(
+{ before(grammarAccess.getRouteAccess().getEndNetworkInterfaceEStringParserRuleCall_10_0_1()); }
+	ruleEString{ after(grammarAccess.getRouteAccess().getEndNetworkInterfaceEStringParserRuleCall_10_0_1()); }
+)
+{ after(grammarAccess.getRouteAccess().getEndNetworkInterfaceCrossReference_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__HopsAssignment_11_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getHopsHopParserRuleCall_11_1_0()); }
+	ruleHop{ after(grammarAccess.getRouteAccess().getHopsHopParserRuleCall_11_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getFlowRouteAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getFlowRouteAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getFlowRouteAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getFlowRouteAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__NumHopsAssignment_6_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getNumHopsEIntegerObjectParserRuleCall_6_1_0()); }
+	ruleEIntegerObject{ after(grammarAccess.getFlowRouteAccess().getNumHopsEIntegerObjectParserRuleCall_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__FlowAssignment_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getFlowFlowCrossReference_8_0()); }
+(
+{ before(grammarAccess.getFlowRouteAccess().getFlowFlowEStringParserRuleCall_8_0_1()); }
+	ruleEString{ after(grammarAccess.getFlowRouteAccess().getFlowFlowEStringParserRuleCall_8_0_1()); }
+)
+{ after(grammarAccess.getFlowRouteAccess().getFlowFlowCrossReference_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__StartAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getStartNetworkInterfaceCrossReference_10_0()); }
+(
+{ before(grammarAccess.getFlowRouteAccess().getStartNetworkInterfaceEStringParserRuleCall_10_0_1()); }
+	ruleEString{ after(grammarAccess.getFlowRouteAccess().getStartNetworkInterfaceEStringParserRuleCall_10_0_1()); }
+)
+{ after(grammarAccess.getFlowRouteAccess().getStartNetworkInterfaceCrossReference_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__EndAssignment_12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getEndNetworkInterfaceCrossReference_12_0()); }
+(
+{ before(grammarAccess.getFlowRouteAccess().getEndNetworkInterfaceEStringParserRuleCall_12_0_1()); }
+	ruleEString{ after(grammarAccess.getFlowRouteAccess().getEndNetworkInterfaceEStringParserRuleCall_12_0_1()); }
+)
+{ after(grammarAccess.getFlowRouteAccess().getEndNetworkInterfaceCrossReference_12_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__HopsAssignment_13_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getHopsHopParserRuleCall_13_1_0()); }
+	ruleHop{ after(grammarAccess.getFlowRouteAccess().getHopsHopParserRuleCall_13_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__IsDefaultAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getIsDefaultIsDefaultKeyword_0_0()); }
+(
+{ before(grammarAccess.getDirectionAccess().getIsDefaultIsDefaultKeyword_0_0()); }
+
+	'isDefault' 
+
+{ after(grammarAccess.getDirectionAccess().getIsDefaultIsDefaultKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getDirectionAccess().getIsDefaultIsDefaultKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__IdAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getIdIDTerminalRuleCall_2_0()); }
+	RULE_ID{ after(grammarAccess.getDirectionAccess().getIdIDTerminalRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__NameAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getNameEStringParserRuleCall_5_0()); }
+	ruleEString{ after(grammarAccess.getDirectionAccess().getNameEStringParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__AlternativeNamesAssignment_6_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getAlternativeNamesEStringParserRuleCall_6_2_0()); }
+	ruleEString{ after(grammarAccess.getDirectionAccess().getAlternativeNamesEStringParserRuleCall_6_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__AlternativeNamesAssignment_6_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getAlternativeNamesEStringParserRuleCall_6_3_1_0()); }
+	ruleEString{ after(grammarAccess.getDirectionAccess().getAlternativeNamesEStringParserRuleCall_6_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__DistanceAssignment_7_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getDistanceELongParserRuleCall_7_1_0()); }
+	ruleELong{ after(grammarAccess.getDirectionAccess().getDistanceELongParserRuleCall_7_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__OnNodeAssignment_9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getOnNodeNodeCrossReference_9_0()); }
+(
+{ before(grammarAccess.getDirectionAccess().getOnNodeNodeEStringParserRuleCall_9_0_1()); }
+	ruleEString{ after(grammarAccess.getDirectionAccess().getOnNodeNodeEStringParserRuleCall_9_0_1()); }
+)
+{ after(grammarAccess.getDirectionAccess().getOnNodeNodeCrossReference_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__FlowAssignment_10_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getFlowFlowCrossReference_10_1_0()); }
+(
+{ before(grammarAccess.getDirectionAccess().getFlowFlowEStringParserRuleCall_10_1_0_1()); }
+	ruleEString{ after(grammarAccess.getDirectionAccess().getFlowFlowEStringParserRuleCall_10_1_0_1()); }
+)
+{ after(grammarAccess.getDirectionAccess().getFlowFlowCrossReference_10_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__ViaAssignment_12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getViaNetworkInterfaceCrossReference_12_0()); }
+(
+{ before(grammarAccess.getDirectionAccess().getViaNetworkInterfaceEStringParserRuleCall_12_0_1()); }
+	ruleEString{ after(grammarAccess.getDirectionAccess().getViaNetworkInterfaceEStringParserRuleCall_12_0_1()); }
+)
+{ after(grammarAccess.getDirectionAccess().getViaNetworkInterfaceCrossReference_12_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__InterfacerefAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getInterfacerefNetworkInterfaceCrossReference_3_0()); }
+(
+{ before(grammarAccess.getHopAccess().getInterfacerefNetworkInterfaceEStringParserRuleCall_3_0_1()); }
+	ruleEString{ after(grammarAccess.getHopAccess().getInterfacerefNetworkInterfaceEStringParserRuleCall_3_0_1()); }
+)
+{ after(grammarAccess.getHopAccess().getInterfacerefNetworkInterfaceCrossReference_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__NextHopAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getNextHopHopParserRuleCall_4_1_0()); }
+	ruleHop{ after(grammarAccess.getHopAccess().getNextHopHopParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackProtocolStackCrossReference_7_0()); }
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackProtocolStackEStringParserRuleCall_7_0_1()); }
+	ruleEString{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackProtocolStackEStringParserRuleCall_7_0_1()); }
+)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackProtocolStackCrossReference_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__AddressesAssignment_8_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_2_0()); }
+	ruleEntityAddress{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__AddressesAssignment_8_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_3_1_0()); }
+	ruleEntityAddress{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__PerformanceAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getPerformancePhysicalNetworkInterfacePerfSpecParserRuleCall_10_0()); }
+	rulePhysicalNetworkInterfacePerfSpec{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getPerformancePhysicalNetworkInterfacePerfSpecParserRuleCall_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__UsedProtocolStackAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackProtocolStackCrossReference_7_0()); }
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackProtocolStackEStringParserRuleCall_7_0_1()); }
+	ruleEString{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackProtocolStackEStringParserRuleCall_7_0_1()); }
+)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackProtocolStackCrossReference_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__AddressesAssignment_8_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_2_0()); }
+	ruleEntityAddress{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__AddressesAssignment_8_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_3_1_0()); }
+	ruleEntityAddress{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__PerformanceAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getPerformancePerformanceSpecificationParserRuleCall_10_0()); }
+	rulePerformanceSpecification{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getPerformancePerformanceSpecificationParserRuleCall_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
+
+RULE_INT : ('0'..'9')+;
+
+RULE_STRING : ('"' ('\\' .|~(('\\'|'"')))* '"'|'\'' ('\\' .|~(('\\'|'\'')))* '\'');
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.tokens b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.tokens
new file mode 100644
index 00000000..cf115ed6
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.tokens
@@ -0,0 +1,309 @@
+'('=123
+')'=124
+','=31
+'-'=87
+'.'=99
+'BranchAction'=109
+'BytesPerSec'=19
+'ConstantDoubleVariable'=88
+'ConstantLongVariable'=90
+'ContinuousFunction'=93
+'DataPlanePerfSpec'=45
+'DataSeries'=102
+'Direction'=149
+'DiscreteFunction'=96
+'E'=13
+'EndNodePerfSpec'=51
+'EntityAddress'=69
+'ExperimentParam'=62
+'FlowRoute'=148
+'G'=18
+'GenericFlow'=80
+'GenericWorkload'=107
+'Hop'=153
+'IntermediateNodePerfSpec'=42
+'K'=16
+'LoopAction'=111
+'M'=17
+'MTU'=35
+'NetworkConfiguration'=59
+'NetworkInfrastructure'=22
+'NetworkProtocol'=82
+'NetworkStructure'=56
+'NetworkTraffic'=53
+'OFFstateDuration'=75
+'ONOFFFlow'=72
+'ONstateDuration'=74
+'ONstateIAT'=73
+'PhysicalLink'=128
+'PhysicalLinkPerfSpec'=41
+'PhysicalNetworkInterface'=156
+'PhysicalNetworkInterfacePerfSpec'=37
+'PhysicalNode'=126
+'ProtocolLayer'=139
+'ProtocolStack'=137
+'ProtocolsRepository'=131
+'RandomVariable'=91
+'Route'=143
+'RoutesRepository'=134
+'SequenceAction'=113
+'SoftwareComponent'=64
+'SpeedUnit'=100
+'StartAction'=114
+'StopAction'=115
+'TrafficSource'=104
+'TransmitAction'=116
+'VirtualLink'=130
+'VirtualLinkPerfSpec'=38
+'VirtualNetworkInterface'=158
+'VirtualNetworkInterfacePerfSpec'=32
+'VirtualNode'=120
+'WaitAction'=118
+'actions'=108
+'address'=70
+'addressGivenBy'=71
+'addresses'=106
+'alternativeNames'=67
+'bitsPerSec'=20
+'carries'=142
+'cdf'=92
+'configuration'=28
+'connectionless'=86
+'connects'=129
+'controlplane'=44
+'data'=103
+'dataCenterAltName'=25
+'dataCenterName'=24
+'dataSize'=81
+'dataUnitLength'=85
+'dataplane'=43
+'deliveryGuaranteed'=160
+'deployedOn'=66
+'destinationAddresses'=79
+'destinationSoftwareComponent'=77
+'directions'=136
+'distance'=152
+'e'=14
+'end'=145
+'equation'=95
+'false'=12
+'flow'=117
+'flowRoutes'=135
+'flows'=54
+'forwardingBandwidthBPS'=50
+'forwardingBandwidthPPS'=49
+'forwardingLatency'=48
+'headersLength'=84
+'hops'=147
+'hostedOn'=121
+'hosts'=127
+'interfaceSpeed'=36
+'interfaceref'=154
+'interfaces'=125
+'intern'=110
+'isCarriedBy'=141
+'isDefault'=161
+'isUp'=33
+'layers'=138
+'links'=58
+'maxSupportedBandwidth'=40
+'mtu'=83
+'name'=65
+'nextHop'=155
+'nodes'=57
+'none'=15
+'numArgs'=94
+'numHops'=146
+'numIterations'=112
+'onNode'=150
+'packetLength'=76
+'packetProcessingTime'=34
+'packetsPerSec'=21
+'params'=30
+'performance'=122
+'prefix'=101
+'processingBandwidthReqPS'=47
+'processingLatency'=46
+'propagationDelay'=39
+'protocol'=140
+'protocols'=132
+'protocolsAndStacks'=60
+'routes'=61
+'software'=55
+'softwareLayersDelay'=52
+'sourceSoftwareComponent'=78
+'stacks'=133
+'start'=144
+'startState'=159
+'structure'=27
+'traffic'=26
+'trafficSources'=68
+'true'=11
+'unit'=89
+'usedProtocolStack'=157
+'value'=63
+'via'=151
+'waitTime'=119
+'workload'=105
+'x'=97
+'y'=98
+'{'=23
+'}'=29
+RULE_ANY_OTHER=10
+RULE_ID=5
+RULE_INT=6
+RULE_ML_COMMENT=7
+RULE_SL_COMMENT=8
+RULE_STRING=4
+RULE_WS=9
+T__100=100
+T__101=101
+T__102=102
+T__103=103
+T__104=104
+T__105=105
+T__106=106
+T__107=107
+T__108=108
+T__109=109
+T__110=110
+T__111=111
+T__112=112
+T__113=113
+T__114=114
+T__115=115
+T__116=116
+T__117=117
+T__118=118
+T__119=119
+T__11=11
+T__120=120
+T__121=121
+T__122=122
+T__123=123
+T__124=124
+T__125=125
+T__126=126
+T__127=127
+T__128=128
+T__129=129
+T__12=12
+T__130=130
+T__131=131
+T__132=132
+T__133=133
+T__134=134
+T__135=135
+T__136=136
+T__137=137
+T__138=138
+T__139=139
+T__13=13
+T__140=140
+T__141=141
+T__142=142
+T__143=143
+T__144=144
+T__145=145
+T__146=146
+T__147=147
+T__148=148
+T__149=149
+T__14=14
+T__150=150
+T__151=151
+T__152=152
+T__153=153
+T__154=154
+T__155=155
+T__156=156
+T__157=157
+T__158=158
+T__159=159
+T__15=15
+T__160=160
+T__161=161
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextLexer$DFA12.class b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextLexer$DFA12.class
new file mode 100644
index 0000000000000000000000000000000000000000..06a8a6a8b7e6b89cd885fc71378ca3f22018820e
GIT binary patch
literal 4760
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
a_1r!WvwR#QwP=a*X!Y(z;7<<ARR3Q(tzt+3

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextLexer.class b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextLexer.class
new file mode 100644
index 0000000000000000000000000000000000000000..42c8972bb13568d03cde2f0b10871c89c00e5b2c
GIT binary patch
literal 76271
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

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextParser$FollowSets000.class b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextParser$FollowSets000.class
new file mode 100644
index 0000000000000000000000000000000000000000..51eb0aa64d0ccc6f13f6f82ccf158401d4fdca8e
GIT binary patch
literal 120667
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
U`CQ(RU-(s5R5w&GR8r{v2PtgeDgXcg

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextParser$FollowSets001.class b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextParser$FollowSets001.class
new file mode 100644
index 0000000000000000000000000000000000000000..8a0f4821267e0e30ba113ea859f45538646178d1
GIT binary patch
literal 121589
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
JoaBN?`ac{#*o*)G

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextParser$FollowSets002.class b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextParser$FollowSets002.class
new file mode 100644
index 0000000000000000000000000000000000000000..762ba79a2c3e62863234b237ec6ca3f172d16089
GIT binary patch
literal 82157
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
O2bsNOY{_`h;r{?w%Hg{J

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextParser.class b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextParser.class
new file mode 100644
index 0000000000000000000000000000000000000000..4be9b94d8ed7c3dd9780da7217652cdeb57bc8a2
GIT binary patch
literal 954060
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

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/internal/DNITextActivator.class b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/internal/DNITextActivator.class
new file mode 100644
index 0000000000000000000000000000000000000000..d8050510968ed417e4e239fe55daa726291a3ca4
GIT binary patch
literal 4032
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

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/labeling/.DNITextDescriptionLabelProvider.java._trace b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/labeling/.DNITextDescriptionLabelProvider.java._trace
new file mode 100644
index 0000000000000000000000000000000000000000..8abba43aadc7b67115c1ea4dcdeb909a5dcefb3c
GIT binary patch
literal 413
zcma)$y$ZrG6oqf9qTt`yMbRfPgOlRm&_$5y;0sh6B~V*!qx2D++<XZ~pU`vLAcBh*
zzMSOb<PajN3MxjtN~JE8y%mu&gw}v7$Tvw6WinLRE-<OW?ik51*3zil$cvUyuvL+c
z57P4&8+aa)sXiH<#7n+fr^!`^DjnrU#UV-^z|$|KINQ%q4<7F;_KqGnvsnin@bg0s
zawCHD1RQJv4&DHJ4bTESVvgku*szUa41Z=l7s`!d4;_HE1&v~2J%0RYyj$}-7{Hs_
LP!Z(Ue+B6cfSf5;

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/labeling/.DNITextDescriptionLabelProvider.xtendbin b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/labeling/.DNITextDescriptionLabelProvider.xtendbin
new file mode 100644
index 0000000000000000000000000000000000000000..6312618ce6182c8cde7f8278ff2f9e0c7208af5b
GIT binary patch
literal 1869
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
UpP^CIH8$geHr9=eJ>?JYKa4vCf&c&j

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/labeling/.DNITextLabelProvider.java._trace b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/labeling/.DNITextLabelProvider.java._trace
new file mode 100644
index 0000000000000000000000000000000000000000..3ecce2bc7f13ca87da84deddc7c67d7c3005edc3
GIT binary patch
literal 894
zcmbu7KQ9D97{+H7LHz$05~r3ZY)5k{6cV{eh)Utujclx4*;`zp^ffdZg~})J8GHg?
zK_dzZzh`f5v!S`f<equweeO5!yfb&kn0{-D;WawZ%n{{X626IpsAkP(o~Cij55m@I
zGtWX+7qK5Ck)Ma{+`o$axOo!BQF7*QHFgg0c9rjC>2(x@*=jovlYmMd(pc(*B6l5_
z8lKjD?mP2Ien>KmX3?Lv1gavSxkCcSkOK>Eh<p@j*juJoG>*CzKk#qJ1*rv{Zy$&P
zCY)69%XtFJiZ3LKr~=vr@-+t)AiHf(Ae-zPQ;a6jj0`^e#B-#+r%=)3J5fE#kOUqP
z^?u!USQ>ADX$4imWAbfOg1n<Qf}zX&2J2OjV|oMG<SjGl7pPXecV2n4z;!0wc-l#q
vd1O701gd~;_&@N;Rntk5{yjxSJyG>&f$~aF>;{uAQw5)$SAy!XC(!%=#Opau

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/labeling/.DNITextLabelProvider.xtendbin b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/labeling/.DNITextLabelProvider.xtendbin
new file mode 100644
index 0000000000000000000000000000000000000000..0ba70c5f9286e1f61900512a50d40897cae1468c
GIT binary patch
literal 2426
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
J#P0!s{{cU`Nk{+y

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/labeling/DNITextDescriptionLabelProvider.class b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/labeling/DNITextDescriptionLabelProvider.class
new file mode 100644
index 0000000000000000000000000000000000000000..74fdf17d359cc707f9fdc58577654e73a016769e
GIT binary patch
literal 689
zcmb_Y%}&BV5T4~%R|GXa045%^64qKIT8)Vjh?+`BAjIpoU2)CQCEJ$pTAoZi_y9hF
z4`bXGE*=aXxO_A7&Ccw6-{<%H2LM>GU4#sR+ek_g5}$=0jTF<_SP(zpBx19O#GDA~
zGQoopX?5=gnrrEoiccag11D+ql$>&(sUqYM*iwxM^8}xSjLd$mAT9PpWAW!ag2E*a
zcyxszdvG{Jkh_sS!;ppb66B$PpyKd=b>p$i)PTBzA=q)GN5zmTp41C67d`V3!M(F8
zWfur=U&hK~9iIHUzr>093!PE~yYrbAbK_B4dl7`%GS~yHPx}u#qC}U*qOM3<1LTc2
zSbNn(2C&AY4N!&+jioft>$sWr%PCf1OUJMN!*vh;=P>-JPw}zQuP%}fKB^v9myIR@
me7q`4>+^MngHLR;X5psYs5S7peO5cgre&K}%9%}UwDAvN@60a%

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/labeling/DNITextLabelProvider.class b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/labeling/DNITextLabelProvider.class
new file mode 100644
index 0000000000000000000000000000000000000000..855e38a83f91b5e546eb040287148f9bafa2c157
GIT binary patch
literal 872
zcmbtR!EVz)5S=w4DNCWy7Nl|tH%Oyy)*)%@LQq5!sgfxbsiI!j_S9_Ucq4mVmCxdY
z#DNds3-}tuILU!X<rG`?&U>DD^E~tG&ySw~(1vF<a2UL^#w59jFb|c@kfLcKqEriu
zw^kHdBr3o}r?D8Eon8><m-sw0H#)+s1{DTflf?qVM9*>*w<~pGfLE$W?C?`?jp1r7
zgX&wIYTIMbf93zHfzvC2k)F4oEjx*Rq-GYgkqWKJzOJ}9c|BpU_qj-|p5jF3I!Lge
zrp79(O`0=!;fH1_Vq@Y2g-%N=;&gtTFsOVm5puW(4>#dHR2gjfI>obM8en#zNQ%L>
zZ$gz!RHjS3BrEodChhnBS`#D#8xbZLD@%=f>&<}yADbczaimMzdv~qu;9A`%2D^*I
z0R}}pq@|@fjS5}@qd}AxqnoAy4%7%$32o5%fSw+4PRTX)zXSh9kpr9b=5uz3s&?TK
z;pdAicnn*FN{uJ*lyn@}Cgi{l<pKO2f9#+0{~G0&WG&*2aeWz#_<p@rzcau5i-@na
zje~_o!{@Fin{9sNy=iv&u_s&24wr3DcA74i9Zw!|+4bZRmxrD_E*ZB~es?96xGrxD
F`CoQ={G$K>

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/outline/.DNITextOutlineTreeProvider.java._trace b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/outline/.DNITextOutlineTreeProvider.java._trace
new file mode 100644
index 0000000000000000000000000000000000000000..683d5a2056fdb459084e60dfa18e2dd3f3350190
GIT binary patch
literal 407
zcma)$O$x#=6og;=1+BUlJ%Z*Cy3kD(>;=RG3Dg$SwDc6Za_P}rc?h@8YoiEmeDHN%
zrqgMNs3oWxajlg`Q1(IyYa0ZDRxVBBOe&on_ReZ-r&y}QNT*9Db0gE-#U{~m8LlH(
zoB9}8t+zHUjM8>qI-MxgH2}}Fmg?-UK@)hqH~l-hVR?cs7=oX>!K)fLcmW*j10SR_
z_73O)9x=n?2m<hKykob3L+o>-*g?l&;NixH_c-`zEWG&@6#UDD4^=^YE&dA93#c6@
AbpQYW

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/outline/.DNITextOutlineTreeProvider.xtendbin b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/outline/.DNITextOutlineTreeProvider.xtendbin
new file mode 100644
index 0000000000000000000000000000000000000000..a7ac26d49e2d2b9c66e6bb79232e385a1307cd75
GIT binary patch
literal 1738
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

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/outline/DNITextOutlineTreeProvider.class b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/outline/DNITextOutlineTreeProvider.class
new file mode 100644
index 0000000000000000000000000000000000000000..c19096eb018ec3d10f18d94a155d75529c71b933
GIT binary patch
literal 665
zcmbtQO;5r=5S`^yR|GZQ#hX^bT0u0`m?(wBq#_A~crERUYnCqAZV7+OlZgj^06)sO
zE$GRQ1D7}R-t5f2nfb@tI{?&RI}a%YH%bT|5}$^it0dLgm=ix>MA4Zd5hEf}oCTEF
zo!h>a?iaK#DeX!zWj>X8$RKD6IU>~KY!Xs3`)Z~>Q$l{vVB-lVHhpv>{?i}?xl0x>
zb%h{(a5zAaX$qfWNW*#ovXDbia<r9BG#*mfcZZxJ*l~pC@_{Q^%$H(DJ+Tmh?X14s
z1p?d?k@RSr#sBU7euwI_J9QE4E}q+T7>!!`5<$pB0Q;bq(su_PQM`=Cyk;cf09oS|
z)?T!b0<1AE0~BFHV<E}2I&LQQVuB^u(sACqyYAwDJmClJ!pBChyiD5osC-=hqbs)U
m<JGTMT?{fDd}5iE8g5wiN*$kB=ao}znwD8hG_!$?7XAc<)5Amn

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/quickfix/.DNITextQuickfixProvider.java._trace b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/quickfix/.DNITextQuickfixProvider.java._trace
new file mode 100644
index 0000000000000000000000000000000000000000..bfe4a6124450452f3ccbbcb4ead809aeb672fab5
GIT binary patch
literal 405
zcma)&O$x#=5QQgJ5&T_BL9bvoE?tV?#vkYfN*f_sTW!<QW4QBbo<lr<Z`vTD8v`FR
z^YZ2qLPSkL)e+~q(h!xk4UyAFZ2?!%(j-Zg$xvm1Z&HQs6v;5w(x}qNT+2(YgX3P8
za<N`{&~|p-rb(egl}<~e;t*jCz-LmIYPOG{F*NQSdq+1kchCj{@bfZgRRS9ez{W0M
z;}hhd19+K_;Km0%U=zgw`oqpHDkq8=>Im>BFi5OEi8Wq)CwdsZjaO*%Pa|*tWuzCA
C>L*74

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/quickfix/.DNITextQuickfixProvider.xtendbin b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/quickfix/.DNITextQuickfixProvider.xtendbin
new file mode 100644
index 0000000000000000000000000000000000000000..84e97716307301668933ea05bfcbab7e3747806b
GIT binary patch
literal 1704
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
I1)z=WAH<BrDF6Tf

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/quickfix/DNITextQuickfixProvider.class b/tools.descartes.dml.dni.text.ui/bin/tools/descatres/dml/dni/text/ui/quickfix/DNITextQuickfixProvider.class
new file mode 100644
index 0000000000000000000000000000000000000000..21f8eeedd7e092d7e5eaca43073b68f45a31b8a9
GIT binary patch
literal 644
zcmbtQ%T5A85Uk;;BZ3-_9`L3}7*`%KD=|KR!~_WjLcA`!1CA~`x(~u{c{1_f#hV{x
zoLw+6F?jJ(-Bmr^)72lJuWta#*i0ivaOO*Cd(7gVY4|Qz*~Dg+Bbd);J_`hU3WWJE
z5;NB5T=kW9v*2A<PKCwYG!g`L>5dsUZSm-FHv4Ynmhh$fV*(!;f&FU&L8>ks;hz%3
z_x1+_iA!m5ia1s?NFqg$YYT^Wg2|A(ePd{If~~eR4SQg?BIFA(;ok|5;G+FsPbUPl
zCj-~yEfM~<v&4Jp-k2H$+w->#J`Bc9<=*jxbg&EMM_n2!lF*03v|=pcK(g?Hm1iZy
zKoy2%Ad5AHnJ7=HxE|HB5$3R=;(PD<yi5ODh~BCdEL!O07fFjA<PY=9TEc}b`rnh4
i=3@$NdZcT`GOg*AVufm&eq5|lt*UF~NYrYy(4=33ce>dC

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/build.properties b/tools.descartes.dml.dni.text.ui/build.properties
new file mode 100644
index 00000000..dfd4ed5d
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/build.properties
@@ -0,0 +1,6 @@
+source.. = src/,\
+           src-gen/,\
+           xtend-gen/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/tools.descartes.dml.dni.text.ui/plugin.xml b/tools.descartes.dml.dni.text.ui/plugin.xml
new file mode 100644
index 00000000..142627a0
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/plugin.xml
@@ -0,0 +1,425 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+            default="true"
+            extensions="dnitxt"
+            id="tools.descatres.dml.dni.text.DNIText"
+            name="DNIText Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="tools.descatres.dml.dni.text.DNIText.validate">
+         <activeWhen>
+            <reference
+                    definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened">
+            </reference>
+         </activeWhen>
+      	</handler>
+      	<!-- copy qualified name -->
+        <handler
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+            <activeWhen>
+				<reference definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened" />
+            </activeWhen>
+        </handler>
+        <handler
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+            <activeWhen>
+            	<and>
+            		<reference definitionId="tools.descatres.dml.dni.text.DNIText.XtextEditor.opened" />
+	                <iterate>
+						<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
+					</iterate>
+				</and>
+            </activeWhen>
+        </handler>
+    </extension>
+    <extension point="org.eclipse.core.expressions.definitions">
+        <definition id="tools.descatres.dml.dni.text.DNIText.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="tools.descatres.dml.dni.text.DNIText" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+        <definition id="tools.descatres.dml.dni.text.DNIText.XtextEditor.opened">
+            <and>
+                <reference definitionId="isXtextEditorActive"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="tools.descatres.dml.dni.text.DNIText" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="tools.descatres.dml.dni.text.DNIText"
+            name="DNIText">
+            <keywordReference id="tools.descatres.dml.dni.text.ui.keyword_DNIText"/>
+        </page>
+        <page
+            category="tools.descatres.dml.dni.text.DNIText"
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="tools.descatres.dml.dni.text.DNIText.coloring"
+            name="Syntax Coloring">
+            <keywordReference id="tools.descatres.dml.dni.text.ui.keyword_DNIText"/>
+        </page>
+        <page
+            category="tools.descatres.dml.dni.text.DNIText"
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="tools.descatres.dml.dni.text.DNIText.templates"
+            name="Templates">
+            <keywordReference id="tools.descatres.dml.dni.text.ui.keyword_DNIText"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="tools.descatres.dml.dni.text.DNIText"
+            name="DNIText">
+            <keywordReference id="tools.descatres.dml.dni.text.ui.keyword_DNIText"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <extension
+        point="org.eclipse.ui.keywords">
+        <keyword
+            id="tools.descatres.dml.dni.text.ui.keyword_DNIText"
+            label="DNIText"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="tools.descatres.dml.dni.text.DNIText.validate"
+            name="Validate">
+      </command>
+      <!-- copy qualified name -->
+      <command
+            id="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+            categoryId="org.eclipse.ui.category.edit"
+            description="Copy the qualified name for the selected element"
+            name="Copy Qualified Name">
+      </command>
+      <command
+            id="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName"
+            categoryId="org.eclipse.ui.category.edit"
+            description="Copy the qualified name for the selected element"
+            name="Copy Qualified Name">
+      </command>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+        <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+             <command
+                 commandId="tools.descatres.dml.dni.text.DNIText.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened">
+                </reference>
+            </visibleWhen>
+         </command>  
+         </menuContribution>
+         <!-- copy qualified name -->
+         <menuContribution locationURI="popup:#TextEditorContext?after=copy">
+         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName" 
+         		style="push" tooltip="Copy Qualified Name">
+            	<visibleWhen checkEnabled="false">
+                	<reference definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened" />
+            	</visibleWhen>
+         	</command>  
+         </menuContribution>
+         <menuContribution locationURI="menu:edit?after=copy">
+         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+            	style="push" tooltip="Copy Qualified Name">
+            	<visibleWhen checkEnabled="false">
+                	<reference definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened" />
+            	</visibleWhen>
+         	</command>  
+         </menuContribution>
+         <menuContribution locationURI="popup:org.eclipse.xtext.ui.outline?after=additions">
+			<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName" 
+				style="push" tooltip="Copy Qualified Name">
+         		<visibleWhen checkEnabled="false">
+	            	<and>
+	            		<reference definitionId="tools.descatres.dml.dni.text.DNIText.XtextEditor.opened" />
+						<iterate>
+							<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
+						</iterate>
+					</and>
+				</visibleWhen>
+			</command>
+         </menuContribution>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+		<menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
+			<command commandId="org.eclipse.xtext.ui.editor.FindReferences">
+				<visibleWhen checkEnabled="false">
+                	<reference definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="dnitxt">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="dnitxt">
+        </resourceServiceProvider>
+    </extension>
+
+
+	<!-- marker definitions for tools.descatres.dml.dni.text.DNIText -->
+	<extension
+	        id="dnitext.check.fast"
+	        name="DNIText Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.fast"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="dnitext.check.normal"
+	        name="DNIText Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.normal"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="dnitext.check.expensive"
+	        name="DNIText Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.expensive"/>
+	    <persistent value="true"/>
+	</extension>
+
+   <extension
+         point="org.eclipse.xtext.builder.participant">
+      <participant
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
+            fileExtensions="dnitxt"
+            >
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="tools.descatres.dml.dni.text.DNIText"
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="tools.descatres.dml.dni.text.DNIText.compiler.preferencePage"
+            name="Compiler">
+            <keywordReference id="tools.descatres.dml.dni.text.ui.keyword_DNIText"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            category="tools.descatres.dml.dni.text.DNIText"
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="tools.descatres.dml.dni.text.DNIText.compiler.propertyPage"
+            name="Compiler">
+            <keywordReference id="tools.descatres.dml.dni.text.ui.keyword_DNIText"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+		<menuContribution locationURI="popup:#TextEditorContext?after=xtext.ui.openDeclaration">
+			<command
+				commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand"
+				id="tools.descatres.dml.dni.text.DNIText.OpenGeneratedCode"
+				style="push">
+					<visibleWhen checkEnabled="false">
+						<reference definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened" />
+					</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+		<handler
+			class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.generator.trace.OpenGeneratedFileHandler"
+			commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand">
+				<activeWhen>
+					<reference definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened" />
+				</activeWhen>
+		</handler>
+	</extension>
+
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+		<command
+			description="Open the quick outline."
+			id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+			name="Quick Outline">
+		</command>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+				style="push"
+				tooltip="Open Quick Outline">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+    <!-- quickfix marker resolution generator for tools.descatres.dml.dni.text.DNIText -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="tools.descatres.dml.dni.text.ui.dnitext.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="tools.descatres.dml.dni.text.ui.dnitext.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="tools.descatres.dml.dni.text.ui.dnitext.check.expensive">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+    </extension>
+   	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+    <extension point="org.eclipse.ui.menus">
+         <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+         <command commandId="org.eclipse.xtext.ui.refactoring.RenameElement"
+               style="push">
+            <visibleWhen checkEnabled="false">
+               <reference
+                     definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="tools.descatres.dml.dni.text.DNIText"
+	        class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="tools.descatres.dml.dni.text.DNIText.refactoring"
+	        name="Refactoring">
+	        <keywordReference id="tools.descatres.dml.dni.text.ui.keyword_DNIText"/>
+	    </page>
+	</extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="tools.descatres.dml.dni.text.DNIText.compare.contentViewers"
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="dnitxt">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="tools.descatres.dml.dni.text.DNIText.compare.contentMergeViewers"
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="dnitxt" label="DNIText Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="tools.descatres.dml.dni.text.DNIText.editors.documentProviders"
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="dnitxt">
+    </provider>
+  </extension>
+  <extension point="org.eclipse.team.core.fileTypes">
+    <fileTypes
+            extension="dnitxt"
+            type="text">
+    </fileTypes>
+  </extension>
+
+</plugin>
diff --git a/tools.descartes.dml.dni.text.ui/plugin.xml_gen b/tools.descartes.dml.dni.text.ui/plugin.xml_gen
new file mode 100644
index 00000000..142627a0
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/plugin.xml_gen
@@ -0,0 +1,425 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+            default="true"
+            extensions="dnitxt"
+            id="tools.descatres.dml.dni.text.DNIText"
+            name="DNIText Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="tools.descatres.dml.dni.text.DNIText.validate">
+         <activeWhen>
+            <reference
+                    definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened">
+            </reference>
+         </activeWhen>
+      	</handler>
+      	<!-- copy qualified name -->
+        <handler
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+            <activeWhen>
+				<reference definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened" />
+            </activeWhen>
+        </handler>
+        <handler
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+            <activeWhen>
+            	<and>
+            		<reference definitionId="tools.descatres.dml.dni.text.DNIText.XtextEditor.opened" />
+	                <iterate>
+						<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
+					</iterate>
+				</and>
+            </activeWhen>
+        </handler>
+    </extension>
+    <extension point="org.eclipse.core.expressions.definitions">
+        <definition id="tools.descatres.dml.dni.text.DNIText.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="tools.descatres.dml.dni.text.DNIText" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+        <definition id="tools.descatres.dml.dni.text.DNIText.XtextEditor.opened">
+            <and>
+                <reference definitionId="isXtextEditorActive"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="tools.descatres.dml.dni.text.DNIText" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="tools.descatres.dml.dni.text.DNIText"
+            name="DNIText">
+            <keywordReference id="tools.descatres.dml.dni.text.ui.keyword_DNIText"/>
+        </page>
+        <page
+            category="tools.descatres.dml.dni.text.DNIText"
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="tools.descatres.dml.dni.text.DNIText.coloring"
+            name="Syntax Coloring">
+            <keywordReference id="tools.descatres.dml.dni.text.ui.keyword_DNIText"/>
+        </page>
+        <page
+            category="tools.descatres.dml.dni.text.DNIText"
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="tools.descatres.dml.dni.text.DNIText.templates"
+            name="Templates">
+            <keywordReference id="tools.descatres.dml.dni.text.ui.keyword_DNIText"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="tools.descatres.dml.dni.text.DNIText"
+            name="DNIText">
+            <keywordReference id="tools.descatres.dml.dni.text.ui.keyword_DNIText"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <extension
+        point="org.eclipse.ui.keywords">
+        <keyword
+            id="tools.descatres.dml.dni.text.ui.keyword_DNIText"
+            label="DNIText"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="tools.descatres.dml.dni.text.DNIText.validate"
+            name="Validate">
+      </command>
+      <!-- copy qualified name -->
+      <command
+            id="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+            categoryId="org.eclipse.ui.category.edit"
+            description="Copy the qualified name for the selected element"
+            name="Copy Qualified Name">
+      </command>
+      <command
+            id="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName"
+            categoryId="org.eclipse.ui.category.edit"
+            description="Copy the qualified name for the selected element"
+            name="Copy Qualified Name">
+      </command>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+        <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+             <command
+                 commandId="tools.descatres.dml.dni.text.DNIText.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened">
+                </reference>
+            </visibleWhen>
+         </command>  
+         </menuContribution>
+         <!-- copy qualified name -->
+         <menuContribution locationURI="popup:#TextEditorContext?after=copy">
+         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName" 
+         		style="push" tooltip="Copy Qualified Name">
+            	<visibleWhen checkEnabled="false">
+                	<reference definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened" />
+            	</visibleWhen>
+         	</command>  
+         </menuContribution>
+         <menuContribution locationURI="menu:edit?after=copy">
+         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+            	style="push" tooltip="Copy Qualified Name">
+            	<visibleWhen checkEnabled="false">
+                	<reference definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened" />
+            	</visibleWhen>
+         	</command>  
+         </menuContribution>
+         <menuContribution locationURI="popup:org.eclipse.xtext.ui.outline?after=additions">
+			<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName" 
+				style="push" tooltip="Copy Qualified Name">
+         		<visibleWhen checkEnabled="false">
+	            	<and>
+	            		<reference definitionId="tools.descatres.dml.dni.text.DNIText.XtextEditor.opened" />
+						<iterate>
+							<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
+						</iterate>
+					</and>
+				</visibleWhen>
+			</command>
+         </menuContribution>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+		<menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
+			<command commandId="org.eclipse.xtext.ui.editor.FindReferences">
+				<visibleWhen checkEnabled="false">
+                	<reference definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="dnitxt">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="dnitxt">
+        </resourceServiceProvider>
+    </extension>
+
+
+	<!-- marker definitions for tools.descatres.dml.dni.text.DNIText -->
+	<extension
+	        id="dnitext.check.fast"
+	        name="DNIText Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.fast"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="dnitext.check.normal"
+	        name="DNIText Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.normal"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="dnitext.check.expensive"
+	        name="DNIText Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.expensive"/>
+	    <persistent value="true"/>
+	</extension>
+
+   <extension
+         point="org.eclipse.xtext.builder.participant">
+      <participant
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
+            fileExtensions="dnitxt"
+            >
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="tools.descatres.dml.dni.text.DNIText"
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="tools.descatres.dml.dni.text.DNIText.compiler.preferencePage"
+            name="Compiler">
+            <keywordReference id="tools.descatres.dml.dni.text.ui.keyword_DNIText"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            category="tools.descatres.dml.dni.text.DNIText"
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="tools.descatres.dml.dni.text.DNIText.compiler.propertyPage"
+            name="Compiler">
+            <keywordReference id="tools.descatres.dml.dni.text.ui.keyword_DNIText"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+		<menuContribution locationURI="popup:#TextEditorContext?after=xtext.ui.openDeclaration">
+			<command
+				commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand"
+				id="tools.descatres.dml.dni.text.DNIText.OpenGeneratedCode"
+				style="push">
+					<visibleWhen checkEnabled="false">
+						<reference definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened" />
+					</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+		<handler
+			class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.generator.trace.OpenGeneratedFileHandler"
+			commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand">
+				<activeWhen>
+					<reference definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened" />
+				</activeWhen>
+		</handler>
+	</extension>
+
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+		<command
+			description="Open the quick outline."
+			id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+			name="Quick Outline">
+		</command>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+				style="push"
+				tooltip="Open Quick Outline">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+    <!-- quickfix marker resolution generator for tools.descatres.dml.dni.text.DNIText -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="tools.descatres.dml.dni.text.ui.dnitext.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="tools.descatres.dml.dni.text.ui.dnitext.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="tools.descatres.dml.dni.text.ui.dnitext.check.expensive">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+    </extension>
+   	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+    <extension point="org.eclipse.ui.menus">
+         <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+         <command commandId="org.eclipse.xtext.ui.refactoring.RenameElement"
+               style="push">
+            <visibleWhen checkEnabled="false">
+               <reference
+                     definitionId="tools.descatres.dml.dni.text.DNIText.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="tools.descatres.dml.dni.text.DNIText"
+	        class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="tools.descatres.dml.dni.text.DNIText.refactoring"
+	        name="Refactoring">
+	        <keywordReference id="tools.descatres.dml.dni.text.ui.keyword_DNIText"/>
+	    </page>
+	</extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="tools.descatres.dml.dni.text.DNIText.compare.contentViewers"
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="dnitxt">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="tools.descatres.dml.dni.text.DNIText.compare.contentMergeViewers"
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="dnitxt" label="DNIText Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="tools.descatres.dml.dni.text.DNIText.editors.documentProviders"
+            class="tools.descatres.dml.dni.text.ui.DNITextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="dnitxt">
+    </provider>
+  </extension>
+  <extension point="org.eclipse.team.core.fileTypes">
+    <fileTypes
+            extension="dnitxt"
+            type="text">
+    </fileTypes>
+  </extension>
+
+</plugin>
diff --git a/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/AbstractDNITextUiModule.java b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/AbstractDNITextUiModule.java
new file mode 100644
index 00000000..bf593a36
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/AbstractDNITextUiModule.java
@@ -0,0 +1,191 @@
+
+/*
+ * generated by Xtext
+ */
+package tools.descatres.dml.dni.text.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Manual modifications go to {tools.descatres.dml.dni.text.ui.DNITextUiModule}
+ */
+@SuppressWarnings("all")
+public abstract class AbstractDNITextUiModule extends org.eclipse.xtext.common.types.ui.DefaultCommonTypesUiModule {
+	
+	public AbstractDNITextUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	}
+	
+	
+	// contributed by org.eclipse.xtext.ui.generator.ImplicitUiFragment
+	public com.google.inject.Provider<org.eclipse.xtext.resource.containers.IAllContainersState> provideIAllContainersState() {
+		return org.eclipse.xtext.ui.shared.Access.getJavaProjectsState();
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IProposalConflictHelper> bindIProposalConflictHelper() {
+		return org.eclipse.xtext.ui.editor.contentassist.antlr.AntlrProposalConflictHelper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureHighlightingLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(tools.descatres.dml.dni.text.parser.antlr.internal.InternalDNITextLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureHighlightingTokenDefProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.ITokenDefProvider.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.exporting.SimpleNamesFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IDependentElementsCalculator> bindIDependentElementsCalculator() {
+		return org.eclipse.xtext.ui.refactoring.impl.DefaultDependentElementsCalculator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptionsBuilderScope(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.NAMED_BUILDER_SCOPE)).to(org.eclipse.xtext.builder.clustering.CurrentDescriptions.ResourceSetAware.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.IXtextEditorCallback> bindIXtextEditorCallback() {
+		return org.eclipse.xtext.builder.nature.NatureAddingEditorCallback.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptionsPersisted(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS)).to(org.eclipse.xtext.builder.builderState.IBuilderState.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.DocumentBasedDirtyResource> bindDocumentBasedDirtyResource() {
+		return org.eclipse.xtext.builder.impl.PersistentDataAwareDirtyResource.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public Class<? extends org.eclipse.xtext.builder.IXtextBuilderParticipant> bindIXtextBuilderParticipant() {
+		return org.eclipse.xtext.builder.BuilderParticipant.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public org.eclipse.core.resources.IWorkspaceRoot bindIWorkspaceRootToInstance() {
+		return org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot();
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public void configureBuilderPreferenceStoreInitializer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer.class).annotatedWith(com.google.inject.name.Names.named("builderPreferenceInitializer")).to(org.eclipse.xtext.builder.preferences.BuilderPreferenceAccess.Initializer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+	public Class<? extends org.eclipse.jface.viewers.ILabelProvider> bindILabelProvider() {
+		return tools.descatres.dml.dni.text.ui.labeling.DNITextLabelProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+	public void configureResourceUIServiceLabelProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.jface.viewers.ILabelProvider.class).annotatedWith(org.eclipse.xtext.ui.resource.ResourceServiceDescriptionLabelProvider.class).to(tools.descatres.dml.dni.text.ui.labeling.DNITextDescriptionLabelProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.outline.OutlineTreeProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.outline.IOutlineTreeProvider> bindIOutlineTreeProvider() {
+		return tools.descatres.dml.dni.text.ui.outline.DNITextOutlineTreeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.outline.OutlineTreeProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.outline.impl.IOutlineTreeStructureProvider> bindIOutlineTreeStructureProvider() {
+		return tools.descatres.dml.dni.text.ui.outline.DNITextOutlineTreeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.quickfix.QuickfixProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider> bindIssueResolutionProvider() {
+		return tools.descatres.dml.dni.text.ui.quickfix.DNITextQuickfixProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.contentAssist.ContentAssistFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider> bindIContentProposalProvider() {
+		return tools.descatres.dml.dni.text.ui.contentassist.DNITextProposalProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext.Factory> bindContentAssistContext$Factory() {
+		return org.eclipse.xtext.ui.editor.contentassist.antlr.ParserBasedContentAssistContextFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.antlr.IContentAssistParser> bindIContentAssistParser() {
+		return tools.descatres.dml.dni.text.ui.contentassist.antlr.DNITextParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
+		binder.bind(tools.descatres.dml.dni.text.ui.contentassist.antlr.internal.InternalDNITextLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(tools.descatres.dml.dni.text.ui.contentassist.antlr.internal.InternalDNITextLexer.class));
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.CONTENT_ASSIST)).to(tools.descatres.dml.dni.text.ui.contentassist.antlr.internal.InternalDNITextLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameStrategy> bindIRenameStrategy() {
+		return org.eclipse.xtext.ui.refactoring.impl.DefaultRenameStrategy.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IReferenceUpdater> bindIReferenceUpdater() {
+		return org.eclipse.xtext.ui.refactoring.impl.DefaultReferenceUpdater.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public void configureIPreferenceStoreInitializer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer.class).annotatedWith(com.google.inject.name.Names.named("RefactoringPreferences")).to(org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferences.Initializer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameRefactoringProvider> bindIRenameRefactoringProvider() {
+		return org.eclipse.xtext.ui.refactoring.impl.DefaultRenameRefactoringProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.ui.IRenameSupport.Factory> bindIRenameSupport$Factory() {
+		return org.eclipse.xtext.ui.refactoring.ui.DefaultRenameSupport.Factory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher> bindPrefixMatcher() {
+		return org.eclipse.xtext.ui.editor.contentassist.FQNPrefixMatcher.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.xtext.ui.codetemplates.ui.preferences.TemplatesLanguageConfiguration> provideTemplatesLanguageConfiguration() {
+		return org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator.getTemplatesLanguageConfigurationProvider();
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistry> provideLanguageRegistry() {
+		return org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator.getLanguageRegistry();
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar> bindLanguageRegistrar() {
+		return org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage> bindXtextTemplatePreferencePage() {
+		return org.eclipse.xtext.ui.codetemplates.ui.preferences.AdvancedTemplatesPreferencePage.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialContentAssistParser> bindIPartialContentAssistParser() {
+		return tools.descatres.dml.dni.text.ui.contentassist.antlr.PartialDNITextContentAssistParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.compare.CompareFragment
+	public Class<? extends org.eclipse.compare.IViewerCreator> bindIViewerCreator() {
+		return org.eclipse.xtext.ui.compare.DefaultViewerCreator.class;
+	}
+
+
+}
diff --git a/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/DNITextExecutableExtensionFactory.java b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/DNITextExecutableExtensionFactory.java
new file mode 100644
index 00000000..069e49bb
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/DNITextExecutableExtensionFactory.java
@@ -0,0 +1,29 @@
+/*
+ * generated by Xtext
+ */
+package tools.descatres.dml.dni.text.ui;
+
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Injector;
+
+import tools.descatres.dml.dni.text.ui.internal.DNITextActivator;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class DNITextExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+	@Override
+	protected Bundle getBundle() {
+		return DNITextActivator.getInstance().getBundle();
+	}
+	
+	@Override
+	protected Injector getInjector() {
+		return DNITextActivator.getInstance().getInjector(DNITextActivator.TOOLS_DESCATRES_DML_DNI_TEXT_DNITEXT);
+	}
+	
+}
diff --git a/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/AbstractDNITextProposalProvider.java b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/AbstractDNITextProposalProvider.java
new file mode 100644
index 00000000..b6fc6920
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/AbstractDNITextProposalProvider.java
@@ -0,0 +1,749 @@
+/*
+ * generated by Xtext
+ */
+package tools.descatres.dml.dni.text.ui.contentassist;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+
+/**
+ * Represents a generated, default implementation of superclass {@link org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider}.
+ * Methods are dynamically dispatched on the first parameter, i.e., you can override them 
+ * with a more concrete subtype. 
+ */
+@SuppressWarnings("all")
+public class AbstractDNITextProposalProvider extends org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider {
+		
+	public void completeNetworkInfrastructure_DataCenterName(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNetworkInfrastructure_DataCenterAltName(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNetworkInfrastructure_Traffic(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNetworkInfrastructure_Structure(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNetworkInfrastructure_Configuration(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNetworkInfrastructure_Params(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualNetworkInterfacePerfSpec_IsUp(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualNetworkInterfacePerfSpec_PacketProcessingTime(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualNetworkInterfacePerfSpec_MTU(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualNetworkInterfacePerfSpec_InterfaceSpeed(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalNetworkInterfacePerfSpec_IsUp(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalNetworkInterfacePerfSpec_PacketProcessingTime(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalNetworkInterfacePerfSpec_MTU(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalNetworkInterfacePerfSpec_InterfaceSpeed(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualLinkPerfSpec_PropagationDelay(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualLinkPerfSpec_MaxSupportedBandwidth(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalLinkPerfSpec_PropagationDelay(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalLinkPerfSpec_MaxSupportedBandwidth(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeIntermediateNodePerfSpec_Dataplane(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeIntermediateNodePerfSpec_Controlplane(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeControlPlanePerfSpec_ProcessingLatency(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeControlPlanePerfSpec_ProcessingBandwidthReqPS(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeControlPlanePerfSpec_PacketProcessingTime(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDataPlanePerfSpec_ForwardingLatency(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDataPlanePerfSpec_ForwardingBandwidthPPS(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDataPlanePerfSpec_ForwardingBandwidthBPS(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDataPlanePerfSpec_PacketProcessingTime(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEndNodePerfSpec_SoftwareLayersDelay(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEndNodePerfSpec_Dataplane(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEndNodePerfSpec_Controlplane(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNetworkTraffic_Flows(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNetworkTraffic_Software(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNetworkStructure_Nodes(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNetworkStructure_Links(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNetworkConfiguration_ProtocolsAndStacks(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNetworkConfiguration_Routes(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeExperimentParam_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeExperimentParam_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSoftwareComponent_Id(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSoftwareComponent_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSoftwareComponent_AlternativeNames(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSoftwareComponent_DeployedOn(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSoftwareComponent_TrafficSources(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEntityAddress_Address(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEntityAddress_AddressGivenBy(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeONOFFFlow_StartState(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeONOFFFlow_Id(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeONOFFFlow_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeONOFFFlow_AlternativeNames(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeONOFFFlow_DestinationSoftwareComponent(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeONOFFFlow_SourceSoftwareComponent(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeONOFFFlow_DestinationAddresses(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeONOFFFlow_ONstateIAT(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeONOFFFlow_ONstateDuration(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeONOFFFlow_OFFstateDuration(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeONOFFFlow_PacketLength(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeGenericFlow_Id(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeGenericFlow_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeGenericFlow_AlternativeNames(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeGenericFlow_DestinationSoftwareComponent(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeGenericFlow_SourceSoftwareComponent(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeGenericFlow_DestinationAddresses(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeGenericFlow_DataSize(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNetworkProtocol_DeliveryGuaranteed(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeNetworkProtocol_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNetworkProtocol_AlternativeNames(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNetworkProtocol_Mtu(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNetworkProtocol_HeadersLength(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNetworkProtocol_DataUnitLength(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeNetworkProtocol_Connectionless(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeConstantDoubleVariable_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeConstantDoubleVariable_Unit(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeConstantLongVariable_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeConstantLongVariable_Unit(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRandomVariable_Unit(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRandomVariable_Cdf(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeContinuousFunction_NumArgs(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeContinuousFunction_Equation(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeContinuousFunction_Unit(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDiscreteFunction_NumArgs(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDiscreteFunction_Unit(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDiscreteFunction_X(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDiscreteFunction_Y(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSpeedUnit_Prefix(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSpeedUnit_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSpeedUnit_Unit(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDataSeries_Data(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTrafficSource_Id(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTrafficSource_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTrafficSource_AlternativeNames(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTrafficSource_Addresses(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTrafficSource_Workload(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeGenericWorkload_Actions(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeBranchAction_Intern(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeLoopAction_Intern(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeLoopAction_NumIterations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSequenceAction_Intern(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTransmitAction_Flow(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeWaitAction_WaitTime(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualNode_Id(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualNode_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualNode_AlternativeNames(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualNode_Software(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualNode_HostedOn(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualNode_Performance(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualNode_Interfaces(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalNode_Id(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalNode_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalNode_AlternativeNames(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalNode_Software(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalNode_Hosts(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalNode_Performance(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalNode_Interfaces(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalLink_Id(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalLink_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalLink_AlternativeNames(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalLink_Connects(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalLink_Performance(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualLink_Id(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualLink_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualLink_AlternativeNames(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualLink_Connects(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualLink_Performance(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeProtocolsRepository_Stacks(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeProtocolsRepository_Protocols(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRoutesRepository_Routes(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRoutesRepository_FlowRoutes(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRoutesRepository_Directions(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeProtocolStack_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeProtocolStack_AlternativeNames(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeProtocolStack_Layers(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeProtocolLayer_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeProtocolLayer_AlternativeNames(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeProtocolLayer_Protocol(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeProtocolLayer_IsCarriedBy(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeProtocolLayer_Carries(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRoute_Id(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRoute_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRoute_AlternativeNames(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRoute_NumHops(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRoute_Start(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRoute_End(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRoute_Hops(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFlowRoute_Id(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFlowRoute_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFlowRoute_AlternativeNames(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFlowRoute_NumHops(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFlowRoute_Flow(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFlowRoute_Start(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFlowRoute_End(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFlowRoute_Hops(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDirection_IsDefault(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDirection_Id(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDirection_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDirection_AlternativeNames(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDirection_Distance(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDirection_OnNode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDirection_Flow(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDirection_Via(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeHop_Interfaceref(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeHop_NextHop(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalNetworkInterface_Id(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalNetworkInterface_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalNetworkInterface_AlternativeNames(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalNetworkInterface_UsedProtocolStack(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalNetworkInterface_Addresses(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completePhysicalNetworkInterface_Performance(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualNetworkInterface_Id(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualNetworkInterface_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualNetworkInterface_AlternativeNames(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualNetworkInterface_UsedProtocolStack(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualNetworkInterface_Addresses(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeVirtualNetworkInterface_Performance(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+    
+	public void complete_NetworkInfrastructure(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Flow(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Node(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Link(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Dependency(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DNIUnit(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Function(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Workload(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_AbstractAction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PerformanceSpecification(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_NetworkInterfacePerfSpec(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_VirtualNetworkInterfacePerfSpec(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PhysicalNetworkInterfacePerfSpec(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_LinkPerfSpec(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_VirtualLinkPerfSpec(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PhysicalLinkPerfSpec(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_IntermediateNodePerfSpec(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ControlPlanePerfSpec(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DataPlanePerfSpec(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_EndNodePerfSpec(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_NetworkInterface(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_NetworkTraffic(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_NetworkStructure(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_NetworkConfiguration(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ExperimentParam(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_EString(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_SoftwareComponent(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_EntityAddress(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ONOFFFlow(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_GenericFlow(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_NetworkProtocol(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_EInt(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_EBoolean(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ConstantDoubleVariable(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ConstantLongVariable(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_RandomVariable(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ContinuousFunction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DiscreteFunction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_UnitPrefix(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_EFloat(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_SpeedUnit(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Speed(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_EDouble(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ELong(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DataSeries(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TrafficSource(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_GenericWorkload(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_BranchAction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_LoopAction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_SequenceAction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StartAction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_StopAction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TransmitAction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_WaitAction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_EObject(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_VirtualNode(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PhysicalNode(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PhysicalLink(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_VirtualLink(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ProtocolsRepository(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_RoutesRepository(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ProtocolStack(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ProtocolLayer(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Route(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_FlowRoute(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Direction(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Hop(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_EIntegerObject(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_PhysicalNetworkInterface(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_VirtualNetworkInterface(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+}
diff --git a/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/DNITextParser.java b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/DNITextParser.java
new file mode 100644
index 00000000..da558e87
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/DNITextParser.java
@@ -0,0 +1,469 @@
+/*
+ * generated by Xtext
+ */
+package tools.descatres.dml.dni.text.ui.contentassist.antlr;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.HashMap;
+
+import org.antlr.runtime.RecognitionException;
+import org.eclipse.xtext.AbstractElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.AbstractContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+
+import com.google.inject.Inject;
+
+import tools.descatres.dml.dni.text.services.DNITextGrammarAccess;
+
+public class DNITextParser extends AbstractContentAssistParser {
+	
+	@Inject
+	private DNITextGrammarAccess grammarAccess;
+	
+	private Map<AbstractElement, String> nameMappings;
+	
+	@Override
+	protected tools.descatres.dml.dni.text.ui.contentassist.antlr.internal.InternalDNITextParser createParser() {
+		tools.descatres.dml.dni.text.ui.contentassist.antlr.internal.InternalDNITextParser result = new tools.descatres.dml.dni.text.ui.contentassist.antlr.internal.InternalDNITextParser(null);
+		result.setGrammarAccess(grammarAccess);
+		return result;
+	}
+	
+	@Override
+	protected String getRuleName(AbstractElement element) {
+		if (nameMappings == null) {
+			nameMappings = new HashMap<AbstractElement, String>() {
+				private static final long serialVersionUID = 1L;
+				{
+					put(grammarAccess.getFlowAccess().getAlternatives(), "rule__Flow__Alternatives");
+					put(grammarAccess.getNodeAccess().getAlternatives(), "rule__Node__Alternatives");
+					put(grammarAccess.getLinkAccess().getAlternatives(), "rule__Link__Alternatives");
+					put(grammarAccess.getDependencyAccess().getAlternatives(), "rule__Dependency__Alternatives");
+					put(grammarAccess.getFunctionAccess().getAlternatives(), "rule__Function__Alternatives");
+					put(grammarAccess.getAbstractActionAccess().getAlternatives(), "rule__AbstractAction__Alternatives");
+					put(grammarAccess.getPerformanceSpecificationAccess().getAlternatives(), "rule__PerformanceSpecification__Alternatives");
+					put(grammarAccess.getNetworkInterfacePerfSpecAccess().getAlternatives(), "rule__NetworkInterfacePerfSpec__Alternatives");
+					put(grammarAccess.getLinkPerfSpecAccess().getAlternatives(), "rule__LinkPerfSpec__Alternatives");
+					put(grammarAccess.getNetworkInterfaceAccess().getAlternatives(), "rule__NetworkInterface__Alternatives");
+					put(grammarAccess.getEStringAccess().getAlternatives(), "rule__EString__Alternatives");
+					put(grammarAccess.getEBooleanAccess().getAlternatives(), "rule__EBoolean__Alternatives");
+					put(grammarAccess.getEFloatAccess().getAlternatives_4_0(), "rule__EFloat__Alternatives_4_0");
+					put(grammarAccess.getEDoubleAccess().getAlternatives_4_0(), "rule__EDouble__Alternatives_4_0");
+					put(grammarAccess.getUnitPrefixAccess().getAlternatives(), "rule__UnitPrefix__Alternatives");
+					put(grammarAccess.getSpeedAccess().getAlternatives(), "rule__Speed__Alternatives");
+					put(grammarAccess.getNetworkInfrastructureAccess().getGroup(), "rule__NetworkInfrastructure__Group__0");
+					put(grammarAccess.getNetworkInfrastructureAccess().getGroup_12(), "rule__NetworkInfrastructure__Group_12__0");
+					put(grammarAccess.getNetworkInfrastructureAccess().getGroup_12_3(), "rule__NetworkInfrastructure__Group_12_3__0");
+					put(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getGroup(), "rule__VirtualNetworkInterfacePerfSpec__Group__0");
+					put(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getGroup(), "rule__PhysicalNetworkInterfacePerfSpec__Group__0");
+					put(grammarAccess.getVirtualLinkPerfSpecAccess().getGroup(), "rule__VirtualLinkPerfSpec__Group__0");
+					put(grammarAccess.getVirtualLinkPerfSpecAccess().getGroup_5(), "rule__VirtualLinkPerfSpec__Group_5__0");
+					put(grammarAccess.getPhysicalLinkPerfSpecAccess().getGroup(), "rule__PhysicalLinkPerfSpec__Group__0");
+					put(grammarAccess.getPhysicalLinkPerfSpecAccess().getGroup_5(), "rule__PhysicalLinkPerfSpec__Group_5__0");
+					put(grammarAccess.getIntermediateNodePerfSpecAccess().getGroup(), "rule__IntermediateNodePerfSpec__Group__0");
+					put(grammarAccess.getControlPlanePerfSpecAccess().getGroup(), "rule__ControlPlanePerfSpec__Group__0");
+					put(grammarAccess.getDataPlanePerfSpecAccess().getGroup(), "rule__DataPlanePerfSpec__Group__0");
+					put(grammarAccess.getEndNodePerfSpecAccess().getGroup(), "rule__EndNodePerfSpec__Group__0");
+					put(grammarAccess.getEndNodePerfSpecAccess().getGroup_4(), "rule__EndNodePerfSpec__Group_4__0");
+					put(grammarAccess.getEndNodePerfSpecAccess().getGroup_5(), "rule__EndNodePerfSpec__Group_5__0");
+					put(grammarAccess.getNetworkTrafficAccess().getGroup(), "rule__NetworkTraffic__Group__0");
+					put(grammarAccess.getNetworkTrafficAccess().getGroup_3(), "rule__NetworkTraffic__Group_3__0");
+					put(grammarAccess.getNetworkTrafficAccess().getGroup_3_3(), "rule__NetworkTraffic__Group_3_3__0");
+					put(grammarAccess.getNetworkTrafficAccess().getGroup_4(), "rule__NetworkTraffic__Group_4__0");
+					put(grammarAccess.getNetworkTrafficAccess().getGroup_4_3(), "rule__NetworkTraffic__Group_4_3__0");
+					put(grammarAccess.getNetworkStructureAccess().getGroup(), "rule__NetworkStructure__Group__0");
+					put(grammarAccess.getNetworkStructureAccess().getGroup_3(), "rule__NetworkStructure__Group_3__0");
+					put(grammarAccess.getNetworkStructureAccess().getGroup_3_3(), "rule__NetworkStructure__Group_3_3__0");
+					put(grammarAccess.getNetworkStructureAccess().getGroup_4(), "rule__NetworkStructure__Group_4__0");
+					put(grammarAccess.getNetworkStructureAccess().getGroup_4_3(), "rule__NetworkStructure__Group_4_3__0");
+					put(grammarAccess.getNetworkConfigurationAccess().getGroup(), "rule__NetworkConfiguration__Group__0");
+					put(grammarAccess.getExperimentParamAccess().getGroup(), "rule__ExperimentParam__Group__0");
+					put(grammarAccess.getSoftwareComponentAccess().getGroup(), "rule__SoftwareComponent__Group__0");
+					put(grammarAccess.getSoftwareComponentAccess().getGroup_5(), "rule__SoftwareComponent__Group_5__0");
+					put(grammarAccess.getSoftwareComponentAccess().getGroup_5_3(), "rule__SoftwareComponent__Group_5_3__0");
+					put(grammarAccess.getSoftwareComponentAccess().getGroup_8(), "rule__SoftwareComponent__Group_8__0");
+					put(grammarAccess.getSoftwareComponentAccess().getGroup_8_3(), "rule__SoftwareComponent__Group_8_3__0");
+					put(grammarAccess.getEntityAddressAccess().getGroup(), "rule__EntityAddress__Group__0");
+					put(grammarAccess.getEntityAddressAccess().getGroup_3(), "rule__EntityAddress__Group_3__0");
+					put(grammarAccess.getEntityAddressAccess().getGroup_4(), "rule__EntityAddress__Group_4__0");
+					put(grammarAccess.getONOFFFlowAccess().getGroup(), "rule__ONOFFFlow__Group__0");
+					put(grammarAccess.getONOFFFlowAccess().getGroup_6(), "rule__ONOFFFlow__Group_6__0");
+					put(grammarAccess.getONOFFFlowAccess().getGroup_6_3(), "rule__ONOFFFlow__Group_6_3__0");
+					put(grammarAccess.getONOFFFlowAccess().getGroup_7(), "rule__ONOFFFlow__Group_7__0");
+					put(grammarAccess.getONOFFFlowAccess().getGroup_8(), "rule__ONOFFFlow__Group_8__0");
+					put(grammarAccess.getONOFFFlowAccess().getGroup_9(), "rule__ONOFFFlow__Group_9__0");
+					put(grammarAccess.getONOFFFlowAccess().getGroup_9_3(), "rule__ONOFFFlow__Group_9_3__0");
+					put(grammarAccess.getGenericFlowAccess().getGroup(), "rule__GenericFlow__Group__0");
+					put(grammarAccess.getGenericFlowAccess().getGroup_5(), "rule__GenericFlow__Group_5__0");
+					put(grammarAccess.getGenericFlowAccess().getGroup_5_3(), "rule__GenericFlow__Group_5_3__0");
+					put(grammarAccess.getGenericFlowAccess().getGroup_6(), "rule__GenericFlow__Group_6__0");
+					put(grammarAccess.getGenericFlowAccess().getGroup_7(), "rule__GenericFlow__Group_7__0");
+					put(grammarAccess.getGenericFlowAccess().getGroup_8(), "rule__GenericFlow__Group_8__0");
+					put(grammarAccess.getGenericFlowAccess().getGroup_8_3(), "rule__GenericFlow__Group_8_3__0");
+					put(grammarAccess.getNetworkProtocolAccess().getGroup(), "rule__NetworkProtocol__Group__0");
+					put(grammarAccess.getNetworkProtocolAccess().getGroup_4(), "rule__NetworkProtocol__Group_4__0");
+					put(grammarAccess.getNetworkProtocolAccess().getGroup_4_3(), "rule__NetworkProtocol__Group_4_3__0");
+					put(grammarAccess.getNetworkProtocolAccess().getGroup_11(), "rule__NetworkProtocol__Group_11__0");
+					put(grammarAccess.getEIntAccess().getGroup(), "rule__EInt__Group__0");
+					put(grammarAccess.getConstantDoubleVariableAccess().getGroup(), "rule__ConstantDoubleVariable__Group__0");
+					put(grammarAccess.getConstantDoubleVariableAccess().getGroup_4(), "rule__ConstantDoubleVariable__Group_4__0");
+					put(grammarAccess.getConstantLongVariableAccess().getGroup(), "rule__ConstantLongVariable__Group__0");
+					put(grammarAccess.getConstantLongVariableAccess().getGroup_4(), "rule__ConstantLongVariable__Group_4__0");
+					put(grammarAccess.getRandomVariableAccess().getGroup(), "rule__RandomVariable__Group__0");
+					put(grammarAccess.getRandomVariableAccess().getGroup_2(), "rule__RandomVariable__Group_2__0");
+					put(grammarAccess.getContinuousFunctionAccess().getGroup(), "rule__ContinuousFunction__Group__0");
+					put(grammarAccess.getContinuousFunctionAccess().getGroup_6(), "rule__ContinuousFunction__Group_6__0");
+					put(grammarAccess.getDiscreteFunctionAccess().getGroup(), "rule__DiscreteFunction__Group__0");
+					put(grammarAccess.getDiscreteFunctionAccess().getGroup_4(), "rule__DiscreteFunction__Group_4__0");
+					put(grammarAccess.getDiscreteFunctionAccess().getGroup_8(), "rule__DiscreteFunction__Group_8__0");
+					put(grammarAccess.getEFloatAccess().getGroup(), "rule__EFloat__Group__0");
+					put(grammarAccess.getEFloatAccess().getGroup_4(), "rule__EFloat__Group_4__0");
+					put(grammarAccess.getSpeedUnitAccess().getGroup(), "rule__SpeedUnit__Group__0");
+					put(grammarAccess.getEDoubleAccess().getGroup(), "rule__EDouble__Group__0");
+					put(grammarAccess.getEDoubleAccess().getGroup_4(), "rule__EDouble__Group_4__0");
+					put(grammarAccess.getELongAccess().getGroup(), "rule__ELong__Group__0");
+					put(grammarAccess.getDataSeriesAccess().getGroup(), "rule__DataSeries__Group__0");
+					put(grammarAccess.getDataSeriesAccess().getGroup_3(), "rule__DataSeries__Group_3__0");
+					put(grammarAccess.getDataSeriesAccess().getGroup_3_3(), "rule__DataSeries__Group_3_3__0");
+					put(grammarAccess.getTrafficSourceAccess().getGroup(), "rule__TrafficSource__Group__0");
+					put(grammarAccess.getTrafficSourceAccess().getGroup_5(), "rule__TrafficSource__Group_5__0");
+					put(grammarAccess.getTrafficSourceAccess().getGroup_5_3(), "rule__TrafficSource__Group_5_3__0");
+					put(grammarAccess.getTrafficSourceAccess().getGroup_6(), "rule__TrafficSource__Group_6__0");
+					put(grammarAccess.getTrafficSourceAccess().getGroup_6_3(), "rule__TrafficSource__Group_6_3__0");
+					put(grammarAccess.getTrafficSourceAccess().getGroup_10(), "rule__TrafficSource__Group_10__0");
+					put(grammarAccess.getGenericWorkloadAccess().getGroup(), "rule__GenericWorkload__Group__0");
+					put(grammarAccess.getGenericWorkloadAccess().getGroup_3(), "rule__GenericWorkload__Group_3__0");
+					put(grammarAccess.getGenericWorkloadAccess().getGroup_3_3(), "rule__GenericWorkload__Group_3_3__0");
+					put(grammarAccess.getBranchActionAccess().getGroup(), "rule__BranchAction__Group__0");
+					put(grammarAccess.getBranchActionAccess().getGroup_5(), "rule__BranchAction__Group_5__0");
+					put(grammarAccess.getLoopActionAccess().getGroup(), "rule__LoopAction__Group__0");
+					put(grammarAccess.getSequenceActionAccess().getGroup(), "rule__SequenceAction__Group__0");
+					put(grammarAccess.getSequenceActionAccess().getGroup_5(), "rule__SequenceAction__Group_5__0");
+					put(grammarAccess.getStartActionAccess().getGroup(), "rule__StartAction__Group__0");
+					put(grammarAccess.getStopActionAccess().getGroup(), "rule__StopAction__Group__0");
+					put(grammarAccess.getTransmitActionAccess().getGroup(), "rule__TransmitAction__Group__0");
+					put(grammarAccess.getWaitActionAccess().getGroup(), "rule__WaitAction__Group__0");
+					put(grammarAccess.getEObjectAccess().getGroup(), "rule__EObject__Group__0");
+					put(grammarAccess.getVirtualNodeAccess().getGroup(), "rule__VirtualNode__Group__0");
+					put(grammarAccess.getVirtualNodeAccess().getGroup_5(), "rule__VirtualNode__Group_5__0");
+					put(grammarAccess.getVirtualNodeAccess().getGroup_5_3(), "rule__VirtualNode__Group_5_3__0");
+					put(grammarAccess.getVirtualNodeAccess().getGroup_6(), "rule__VirtualNode__Group_6__0");
+					put(grammarAccess.getVirtualNodeAccess().getGroup_6_3(), "rule__VirtualNode__Group_6_3__0");
+					put(grammarAccess.getVirtualNodeAccess().getGroup_11(), "rule__VirtualNode__Group_11__0");
+					put(grammarAccess.getVirtualNodeAccess().getGroup_11_3(), "rule__VirtualNode__Group_11_3__0");
+					put(grammarAccess.getPhysicalNodeAccess().getGroup(), "rule__PhysicalNode__Group__0");
+					put(grammarAccess.getPhysicalNodeAccess().getGroup_5(), "rule__PhysicalNode__Group_5__0");
+					put(grammarAccess.getPhysicalNodeAccess().getGroup_5_3(), "rule__PhysicalNode__Group_5_3__0");
+					put(grammarAccess.getPhysicalNodeAccess().getGroup_6(), "rule__PhysicalNode__Group_6__0");
+					put(grammarAccess.getPhysicalNodeAccess().getGroup_6_3(), "rule__PhysicalNode__Group_6_3__0");
+					put(grammarAccess.getPhysicalNodeAccess().getGroup_7(), "rule__PhysicalNode__Group_7__0");
+					put(grammarAccess.getPhysicalNodeAccess().getGroup_7_3(), "rule__PhysicalNode__Group_7_3__0");
+					put(grammarAccess.getPhysicalNodeAccess().getGroup_10(), "rule__PhysicalNode__Group_10__0");
+					put(grammarAccess.getPhysicalNodeAccess().getGroup_10_3(), "rule__PhysicalNode__Group_10_3__0");
+					put(grammarAccess.getPhysicalLinkAccess().getGroup(), "rule__PhysicalLink__Group__0");
+					put(grammarAccess.getPhysicalLinkAccess().getGroup_5(), "rule__PhysicalLink__Group_5__0");
+					put(grammarAccess.getPhysicalLinkAccess().getGroup_5_3(), "rule__PhysicalLink__Group_5_3__0");
+					put(grammarAccess.getPhysicalLinkAccess().getGroup_9(), "rule__PhysicalLink__Group_9__0");
+					put(grammarAccess.getVirtualLinkAccess().getGroup(), "rule__VirtualLink__Group__0");
+					put(grammarAccess.getVirtualLinkAccess().getGroup_5(), "rule__VirtualLink__Group_5__0");
+					put(grammarAccess.getVirtualLinkAccess().getGroup_5_3(), "rule__VirtualLink__Group_5_3__0");
+					put(grammarAccess.getVirtualLinkAccess().getGroup_9(), "rule__VirtualLink__Group_9__0");
+					put(grammarAccess.getProtocolsRepositoryAccess().getGroup(), "rule__ProtocolsRepository__Group__0");
+					put(grammarAccess.getProtocolsRepositoryAccess().getGroup_2(), "rule__ProtocolsRepository__Group_2__0");
+					put(grammarAccess.getProtocolsRepositoryAccess().getGroup_2_3(), "rule__ProtocolsRepository__Group_2_3__0");
+					put(grammarAccess.getProtocolsRepositoryAccess().getGroup_6(), "rule__ProtocolsRepository__Group_6__0");
+					put(grammarAccess.getRoutesRepositoryAccess().getGroup(), "rule__RoutesRepository__Group__0");
+					put(grammarAccess.getRoutesRepositoryAccess().getGroup_3(), "rule__RoutesRepository__Group_3__0");
+					put(grammarAccess.getRoutesRepositoryAccess().getGroup_3_3(), "rule__RoutesRepository__Group_3_3__0");
+					put(grammarAccess.getRoutesRepositoryAccess().getGroup_4(), "rule__RoutesRepository__Group_4__0");
+					put(grammarAccess.getRoutesRepositoryAccess().getGroup_4_3(), "rule__RoutesRepository__Group_4_3__0");
+					put(grammarAccess.getRoutesRepositoryAccess().getGroup_5(), "rule__RoutesRepository__Group_5__0");
+					put(grammarAccess.getRoutesRepositoryAccess().getGroup_5_3(), "rule__RoutesRepository__Group_5_3__0");
+					put(grammarAccess.getProtocolStackAccess().getGroup(), "rule__ProtocolStack__Group__0");
+					put(grammarAccess.getProtocolStackAccess().getGroup_3(), "rule__ProtocolStack__Group_3__0");
+					put(grammarAccess.getProtocolStackAccess().getGroup_3_3(), "rule__ProtocolStack__Group_3_3__0");
+					put(grammarAccess.getProtocolStackAccess().getGroup_7(), "rule__ProtocolStack__Group_7__0");
+					put(grammarAccess.getProtocolLayerAccess().getGroup(), "rule__ProtocolLayer__Group__0");
+					put(grammarAccess.getProtocolLayerAccess().getGroup_3(), "rule__ProtocolLayer__Group_3__0");
+					put(grammarAccess.getProtocolLayerAccess().getGroup_3_3(), "rule__ProtocolLayer__Group_3_3__0");
+					put(grammarAccess.getProtocolLayerAccess().getGroup_6(), "rule__ProtocolLayer__Group_6__0");
+					put(grammarAccess.getProtocolLayerAccess().getGroup_7(), "rule__ProtocolLayer__Group_7__0");
+					put(grammarAccess.getRouteAccess().getGroup(), "rule__Route__Group__0");
+					put(grammarAccess.getRouteAccess().getGroup_5(), "rule__Route__Group_5__0");
+					put(grammarAccess.getRouteAccess().getGroup_5_3(), "rule__Route__Group_5_3__0");
+					put(grammarAccess.getRouteAccess().getGroup_6(), "rule__Route__Group_6__0");
+					put(grammarAccess.getRouteAccess().getGroup_11(), "rule__Route__Group_11__0");
+					put(grammarAccess.getFlowRouteAccess().getGroup(), "rule__FlowRoute__Group__0");
+					put(grammarAccess.getFlowRouteAccess().getGroup_5(), "rule__FlowRoute__Group_5__0");
+					put(grammarAccess.getFlowRouteAccess().getGroup_5_3(), "rule__FlowRoute__Group_5_3__0");
+					put(grammarAccess.getFlowRouteAccess().getGroup_6(), "rule__FlowRoute__Group_6__0");
+					put(grammarAccess.getFlowRouteAccess().getGroup_13(), "rule__FlowRoute__Group_13__0");
+					put(grammarAccess.getDirectionAccess().getGroup(), "rule__Direction__Group__0");
+					put(grammarAccess.getDirectionAccess().getGroup_6(), "rule__Direction__Group_6__0");
+					put(grammarAccess.getDirectionAccess().getGroup_6_3(), "rule__Direction__Group_6_3__0");
+					put(grammarAccess.getDirectionAccess().getGroup_7(), "rule__Direction__Group_7__0");
+					put(grammarAccess.getDirectionAccess().getGroup_10(), "rule__Direction__Group_10__0");
+					put(grammarAccess.getHopAccess().getGroup(), "rule__Hop__Group__0");
+					put(grammarAccess.getHopAccess().getGroup_4(), "rule__Hop__Group_4__0");
+					put(grammarAccess.getEIntegerObjectAccess().getGroup(), "rule__EIntegerObject__Group__0");
+					put(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup(), "rule__PhysicalNetworkInterface__Group__0");
+					put(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_5(), "rule__PhysicalNetworkInterface__Group_5__0");
+					put(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_5_3(), "rule__PhysicalNetworkInterface__Group_5_3__0");
+					put(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_8(), "rule__PhysicalNetworkInterface__Group_8__0");
+					put(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_8_3(), "rule__PhysicalNetworkInterface__Group_8_3__0");
+					put(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup(), "rule__VirtualNetworkInterface__Group__0");
+					put(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_5(), "rule__VirtualNetworkInterface__Group_5__0");
+					put(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_5_3(), "rule__VirtualNetworkInterface__Group_5_3__0");
+					put(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_8(), "rule__VirtualNetworkInterface__Group_8__0");
+					put(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_8_3(), "rule__VirtualNetworkInterface__Group_8_3__0");
+					put(grammarAccess.getNetworkInfrastructureAccess().getDataCenterNameAssignment_3(), "rule__NetworkInfrastructure__DataCenterNameAssignment_3");
+					put(grammarAccess.getNetworkInfrastructureAccess().getDataCenterAltNameAssignment_5(), "rule__NetworkInfrastructure__DataCenterAltNameAssignment_5");
+					put(grammarAccess.getNetworkInfrastructureAccess().getTrafficAssignment_7(), "rule__NetworkInfrastructure__TrafficAssignment_7");
+					put(grammarAccess.getNetworkInfrastructureAccess().getStructureAssignment_9(), "rule__NetworkInfrastructure__StructureAssignment_9");
+					put(grammarAccess.getNetworkInfrastructureAccess().getConfigurationAssignment_11(), "rule__NetworkInfrastructure__ConfigurationAssignment_11");
+					put(grammarAccess.getNetworkInfrastructureAccess().getParamsAssignment_12_2(), "rule__NetworkInfrastructure__ParamsAssignment_12_2");
+					put(grammarAccess.getNetworkInfrastructureAccess().getParamsAssignment_12_3_1(), "rule__NetworkInfrastructure__ParamsAssignment_12_3_1");
+					put(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getIsUpAssignment_4(), "rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_4");
+					put(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getPacketProcessingTimeAssignment_6(), "rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6");
+					put(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getMTUAssignment_8(), "rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_8");
+					put(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getInterfaceSpeedAssignment_10(), "rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10");
+					put(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getIsUpAssignment_4(), "rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_4");
+					put(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPacketProcessingTimeAssignment_6(), "rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6");
+					put(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getMTUAssignment_8(), "rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_8");
+					put(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getInterfaceSpeedAssignment_10(), "rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10");
+					put(grammarAccess.getVirtualLinkPerfSpecAccess().getPropagationDelayAssignment_4(), "rule__VirtualLinkPerfSpec__PropagationDelayAssignment_4");
+					put(grammarAccess.getVirtualLinkPerfSpecAccess().getMaxSupportedBandwidthAssignment_5_1(), "rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1");
+					put(grammarAccess.getPhysicalLinkPerfSpecAccess().getPropagationDelayAssignment_4(), "rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_4");
+					put(grammarAccess.getPhysicalLinkPerfSpecAccess().getMaxSupportedBandwidthAssignment_5_1(), "rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1");
+					put(grammarAccess.getIntermediateNodePerfSpecAccess().getDataplaneAssignment_3(), "rule__IntermediateNodePerfSpec__DataplaneAssignment_3");
+					put(grammarAccess.getIntermediateNodePerfSpecAccess().getControlplaneAssignment_5(), "rule__IntermediateNodePerfSpec__ControlplaneAssignment_5");
+					put(grammarAccess.getControlPlanePerfSpecAccess().getProcessingLatencyAssignment_3(), "rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_3");
+					put(grammarAccess.getControlPlanePerfSpecAccess().getProcessingBandwidthReqPSAssignment_5(), "rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_5");
+					put(grammarAccess.getControlPlanePerfSpecAccess().getPacketProcessingTimeAssignment_7(), "rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_7");
+					put(grammarAccess.getDataPlanePerfSpecAccess().getForwardingLatencyAssignment_3(), "rule__DataPlanePerfSpec__ForwardingLatencyAssignment_3");
+					put(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthPPSAssignment_5(), "rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_5");
+					put(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthBPSAssignment_7(), "rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_7");
+					put(grammarAccess.getDataPlanePerfSpecAccess().getPacketProcessingTimeAssignment_9(), "rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_9");
+					put(grammarAccess.getEndNodePerfSpecAccess().getSoftwareLayersDelayAssignment_3(), "rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_3");
+					put(grammarAccess.getEndNodePerfSpecAccess().getDataplaneAssignment_4_1(), "rule__EndNodePerfSpec__DataplaneAssignment_4_1");
+					put(grammarAccess.getEndNodePerfSpecAccess().getControlplaneAssignment_5_1(), "rule__EndNodePerfSpec__ControlplaneAssignment_5_1");
+					put(grammarAccess.getNetworkTrafficAccess().getFlowsAssignment_3_2(), "rule__NetworkTraffic__FlowsAssignment_3_2");
+					put(grammarAccess.getNetworkTrafficAccess().getFlowsAssignment_3_3_1(), "rule__NetworkTraffic__FlowsAssignment_3_3_1");
+					put(grammarAccess.getNetworkTrafficAccess().getSoftwareAssignment_4_2(), "rule__NetworkTraffic__SoftwareAssignment_4_2");
+					put(grammarAccess.getNetworkTrafficAccess().getSoftwareAssignment_4_3_1(), "rule__NetworkTraffic__SoftwareAssignment_4_3_1");
+					put(grammarAccess.getNetworkStructureAccess().getNodesAssignment_3_2(), "rule__NetworkStructure__NodesAssignment_3_2");
+					put(grammarAccess.getNetworkStructureAccess().getNodesAssignment_3_3_1(), "rule__NetworkStructure__NodesAssignment_3_3_1");
+					put(grammarAccess.getNetworkStructureAccess().getLinksAssignment_4_2(), "rule__NetworkStructure__LinksAssignment_4_2");
+					put(grammarAccess.getNetworkStructureAccess().getLinksAssignment_4_3_1(), "rule__NetworkStructure__LinksAssignment_4_3_1");
+					put(grammarAccess.getNetworkConfigurationAccess().getProtocolsAndStacksAssignment_3(), "rule__NetworkConfiguration__ProtocolsAndStacksAssignment_3");
+					put(grammarAccess.getNetworkConfigurationAccess().getRoutesAssignment_5(), "rule__NetworkConfiguration__RoutesAssignment_5");
+					put(grammarAccess.getExperimentParamAccess().getNameAssignment_1(), "rule__ExperimentParam__NameAssignment_1");
+					put(grammarAccess.getExperimentParamAccess().getValueAssignment_4(), "rule__ExperimentParam__ValueAssignment_4");
+					put(grammarAccess.getSoftwareComponentAccess().getIdAssignment_1(), "rule__SoftwareComponent__IdAssignment_1");
+					put(grammarAccess.getSoftwareComponentAccess().getNameAssignment_4(), "rule__SoftwareComponent__NameAssignment_4");
+					put(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesAssignment_5_2(), "rule__SoftwareComponent__AlternativeNamesAssignment_5_2");
+					put(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesAssignment_5_3_1(), "rule__SoftwareComponent__AlternativeNamesAssignment_5_3_1");
+					put(grammarAccess.getSoftwareComponentAccess().getDeployedOnAssignment_7(), "rule__SoftwareComponent__DeployedOnAssignment_7");
+					put(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesAssignment_8_2(), "rule__SoftwareComponent__TrafficSourcesAssignment_8_2");
+					put(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesAssignment_8_3_1(), "rule__SoftwareComponent__TrafficSourcesAssignment_8_3_1");
+					put(grammarAccess.getEntityAddressAccess().getAddressAssignment_3_1(), "rule__EntityAddress__AddressAssignment_3_1");
+					put(grammarAccess.getEntityAddressAccess().getAddressGivenByAssignment_4_1(), "rule__EntityAddress__AddressGivenByAssignment_4_1");
+					put(grammarAccess.getONOFFFlowAccess().getStartStateAssignment_0(), "rule__ONOFFFlow__StartStateAssignment_0");
+					put(grammarAccess.getONOFFFlowAccess().getIdAssignment_2(), "rule__ONOFFFlow__IdAssignment_2");
+					put(grammarAccess.getONOFFFlowAccess().getNameAssignment_5(), "rule__ONOFFFlow__NameAssignment_5");
+					put(grammarAccess.getONOFFFlowAccess().getAlternativeNamesAssignment_6_2(), "rule__ONOFFFlow__AlternativeNamesAssignment_6_2");
+					put(grammarAccess.getONOFFFlowAccess().getAlternativeNamesAssignment_6_3_1(), "rule__ONOFFFlow__AlternativeNamesAssignment_6_3_1");
+					put(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentAssignment_7_1(), "rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_1");
+					put(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentAssignment_8_1(), "rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_1");
+					put(grammarAccess.getONOFFFlowAccess().getDestinationAddressesAssignment_9_2(), "rule__ONOFFFlow__DestinationAddressesAssignment_9_2");
+					put(grammarAccess.getONOFFFlowAccess().getDestinationAddressesAssignment_9_3_1(), "rule__ONOFFFlow__DestinationAddressesAssignment_9_3_1");
+					put(grammarAccess.getONOFFFlowAccess().getONstateIATAssignment_11(), "rule__ONOFFFlow__ONstateIATAssignment_11");
+					put(grammarAccess.getONOFFFlowAccess().getONstateDurationAssignment_13(), "rule__ONOFFFlow__ONstateDurationAssignment_13");
+					put(grammarAccess.getONOFFFlowAccess().getOFFstateDurationAssignment_15(), "rule__ONOFFFlow__OFFstateDurationAssignment_15");
+					put(grammarAccess.getONOFFFlowAccess().getPacketLengthAssignment_17(), "rule__ONOFFFlow__PacketLengthAssignment_17");
+					put(grammarAccess.getGenericFlowAccess().getIdAssignment_1(), "rule__GenericFlow__IdAssignment_1");
+					put(grammarAccess.getGenericFlowAccess().getNameAssignment_4(), "rule__GenericFlow__NameAssignment_4");
+					put(grammarAccess.getGenericFlowAccess().getAlternativeNamesAssignment_5_2(), "rule__GenericFlow__AlternativeNamesAssignment_5_2");
+					put(grammarAccess.getGenericFlowAccess().getAlternativeNamesAssignment_5_3_1(), "rule__GenericFlow__AlternativeNamesAssignment_5_3_1");
+					put(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentAssignment_6_1(), "rule__GenericFlow__DestinationSoftwareComponentAssignment_6_1");
+					put(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentAssignment_7_1(), "rule__GenericFlow__SourceSoftwareComponentAssignment_7_1");
+					put(grammarAccess.getGenericFlowAccess().getDestinationAddressesAssignment_8_2(), "rule__GenericFlow__DestinationAddressesAssignment_8_2");
+					put(grammarAccess.getGenericFlowAccess().getDestinationAddressesAssignment_8_3_1(), "rule__GenericFlow__DestinationAddressesAssignment_8_3_1");
+					put(grammarAccess.getGenericFlowAccess().getDataSizeAssignment_10(), "rule__GenericFlow__DataSizeAssignment_10");
+					put(grammarAccess.getNetworkProtocolAccess().getDeliveryGuaranteedAssignment_0(), "rule__NetworkProtocol__DeliveryGuaranteedAssignment_0");
+					put(grammarAccess.getNetworkProtocolAccess().getNameAssignment_2(), "rule__NetworkProtocol__NameAssignment_2");
+					put(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesAssignment_4_2(), "rule__NetworkProtocol__AlternativeNamesAssignment_4_2");
+					put(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesAssignment_4_3_1(), "rule__NetworkProtocol__AlternativeNamesAssignment_4_3_1");
+					put(grammarAccess.getNetworkProtocolAccess().getMtuAssignment_6(), "rule__NetworkProtocol__MtuAssignment_6");
+					put(grammarAccess.getNetworkProtocolAccess().getHeadersLengthAssignment_8(), "rule__NetworkProtocol__HeadersLengthAssignment_8");
+					put(grammarAccess.getNetworkProtocolAccess().getDataUnitLengthAssignment_10(), "rule__NetworkProtocol__DataUnitLengthAssignment_10");
+					put(grammarAccess.getNetworkProtocolAccess().getConnectionlessAssignment_11_1(), "rule__NetworkProtocol__ConnectionlessAssignment_11_1");
+					put(grammarAccess.getConstantDoubleVariableAccess().getValueAssignment_3(), "rule__ConstantDoubleVariable__ValueAssignment_3");
+					put(grammarAccess.getConstantDoubleVariableAccess().getUnitAssignment_4_1(), "rule__ConstantDoubleVariable__UnitAssignment_4_1");
+					put(grammarAccess.getConstantLongVariableAccess().getValueAssignment_3(), "rule__ConstantLongVariable__ValueAssignment_3");
+					put(grammarAccess.getConstantLongVariableAccess().getUnitAssignment_4_1(), "rule__ConstantLongVariable__UnitAssignment_4_1");
+					put(grammarAccess.getRandomVariableAccess().getUnitAssignment_2_1(), "rule__RandomVariable__UnitAssignment_2_1");
+					put(grammarAccess.getRandomVariableAccess().getCdfAssignment_4(), "rule__RandomVariable__CdfAssignment_4");
+					put(grammarAccess.getContinuousFunctionAccess().getNumArgsAssignment_3(), "rule__ContinuousFunction__NumArgsAssignment_3");
+					put(grammarAccess.getContinuousFunctionAccess().getEquationAssignment_5(), "rule__ContinuousFunction__EquationAssignment_5");
+					put(grammarAccess.getContinuousFunctionAccess().getUnitAssignment_6_1(), "rule__ContinuousFunction__UnitAssignment_6_1");
+					put(grammarAccess.getDiscreteFunctionAccess().getNumArgsAssignment_3(), "rule__DiscreteFunction__NumArgsAssignment_3");
+					put(grammarAccess.getDiscreteFunctionAccess().getUnitAssignment_4_1(), "rule__DiscreteFunction__UnitAssignment_4_1");
+					put(grammarAccess.getDiscreteFunctionAccess().getXAssignment_7(), "rule__DiscreteFunction__XAssignment_7");
+					put(grammarAccess.getDiscreteFunctionAccess().getXAssignment_8_1(), "rule__DiscreteFunction__XAssignment_8_1");
+					put(grammarAccess.getDiscreteFunctionAccess().getYAssignment_11(), "rule__DiscreteFunction__YAssignment_11");
+					put(grammarAccess.getSpeedUnitAccess().getPrefixAssignment_3(), "rule__SpeedUnit__PrefixAssignment_3");
+					put(grammarAccess.getSpeedUnitAccess().getValueAssignment_5(), "rule__SpeedUnit__ValueAssignment_5");
+					put(grammarAccess.getSpeedUnitAccess().getUnitAssignment_7(), "rule__SpeedUnit__UnitAssignment_7");
+					put(grammarAccess.getDataSeriesAccess().getDataAssignment_3_2(), "rule__DataSeries__DataAssignment_3_2");
+					put(grammarAccess.getDataSeriesAccess().getDataAssignment_3_3_1(), "rule__DataSeries__DataAssignment_3_3_1");
+					put(grammarAccess.getTrafficSourceAccess().getIdAssignment_1(), "rule__TrafficSource__IdAssignment_1");
+					put(grammarAccess.getTrafficSourceAccess().getNameAssignment_4(), "rule__TrafficSource__NameAssignment_4");
+					put(grammarAccess.getTrafficSourceAccess().getAlternativeNamesAssignment_5_2(), "rule__TrafficSource__AlternativeNamesAssignment_5_2");
+					put(grammarAccess.getTrafficSourceAccess().getAlternativeNamesAssignment_5_3_1(), "rule__TrafficSource__AlternativeNamesAssignment_5_3_1");
+					put(grammarAccess.getTrafficSourceAccess().getAddressesAssignment_6_2(), "rule__TrafficSource__AddressesAssignment_6_2");
+					put(grammarAccess.getTrafficSourceAccess().getAddressesAssignment_6_3_1(), "rule__TrafficSource__AddressesAssignment_6_3_1");
+					put(grammarAccess.getTrafficSourceAccess().getWorkloadAssignment_9(), "rule__TrafficSource__WorkloadAssignment_9");
+					put(grammarAccess.getTrafficSourceAccess().getWorkloadAssignment_10_1(), "rule__TrafficSource__WorkloadAssignment_10_1");
+					put(grammarAccess.getGenericWorkloadAccess().getActionsAssignment_3_2(), "rule__GenericWorkload__ActionsAssignment_3_2");
+					put(grammarAccess.getGenericWorkloadAccess().getActionsAssignment_3_3_1(), "rule__GenericWorkload__ActionsAssignment_3_3_1");
+					put(grammarAccess.getBranchActionAccess().getInternAssignment_4(), "rule__BranchAction__InternAssignment_4");
+					put(grammarAccess.getBranchActionAccess().getInternAssignment_5_1(), "rule__BranchAction__InternAssignment_5_1");
+					put(grammarAccess.getLoopActionAccess().getInternAssignment_3(), "rule__LoopAction__InternAssignment_3");
+					put(grammarAccess.getLoopActionAccess().getNumIterationsAssignment_5(), "rule__LoopAction__NumIterationsAssignment_5");
+					put(grammarAccess.getSequenceActionAccess().getInternAssignment_4(), "rule__SequenceAction__InternAssignment_4");
+					put(grammarAccess.getSequenceActionAccess().getInternAssignment_5_1(), "rule__SequenceAction__InternAssignment_5_1");
+					put(grammarAccess.getTransmitActionAccess().getFlowAssignment_3(), "rule__TransmitAction__FlowAssignment_3");
+					put(grammarAccess.getWaitActionAccess().getWaitTimeAssignment_3(), "rule__WaitAction__WaitTimeAssignment_3");
+					put(grammarAccess.getVirtualNodeAccess().getIdAssignment_1(), "rule__VirtualNode__IdAssignment_1");
+					put(grammarAccess.getVirtualNodeAccess().getNameAssignment_4(), "rule__VirtualNode__NameAssignment_4");
+					put(grammarAccess.getVirtualNodeAccess().getAlternativeNamesAssignment_5_2(), "rule__VirtualNode__AlternativeNamesAssignment_5_2");
+					put(grammarAccess.getVirtualNodeAccess().getAlternativeNamesAssignment_5_3_1(), "rule__VirtualNode__AlternativeNamesAssignment_5_3_1");
+					put(grammarAccess.getVirtualNodeAccess().getSoftwareAssignment_6_2(), "rule__VirtualNode__SoftwareAssignment_6_2");
+					put(grammarAccess.getVirtualNodeAccess().getSoftwareAssignment_6_3_1(), "rule__VirtualNode__SoftwareAssignment_6_3_1");
+					put(grammarAccess.getVirtualNodeAccess().getHostedOnAssignment_8(), "rule__VirtualNode__HostedOnAssignment_8");
+					put(grammarAccess.getVirtualNodeAccess().getPerformanceAssignment_10(), "rule__VirtualNode__PerformanceAssignment_10");
+					put(grammarAccess.getVirtualNodeAccess().getInterfacesAssignment_11_2(), "rule__VirtualNode__InterfacesAssignment_11_2");
+					put(grammarAccess.getVirtualNodeAccess().getInterfacesAssignment_11_3_1(), "rule__VirtualNode__InterfacesAssignment_11_3_1");
+					put(grammarAccess.getPhysicalNodeAccess().getIdAssignment_1(), "rule__PhysicalNode__IdAssignment_1");
+					put(grammarAccess.getPhysicalNodeAccess().getNameAssignment_4(), "rule__PhysicalNode__NameAssignment_4");
+					put(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesAssignment_5_2(), "rule__PhysicalNode__AlternativeNamesAssignment_5_2");
+					put(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesAssignment_5_3_1(), "rule__PhysicalNode__AlternativeNamesAssignment_5_3_1");
+					put(grammarAccess.getPhysicalNodeAccess().getSoftwareAssignment_6_2(), "rule__PhysicalNode__SoftwareAssignment_6_2");
+					put(grammarAccess.getPhysicalNodeAccess().getSoftwareAssignment_6_3_1(), "rule__PhysicalNode__SoftwareAssignment_6_3_1");
+					put(grammarAccess.getPhysicalNodeAccess().getHostsAssignment_7_2(), "rule__PhysicalNode__HostsAssignment_7_2");
+					put(grammarAccess.getPhysicalNodeAccess().getHostsAssignment_7_3_1(), "rule__PhysicalNode__HostsAssignment_7_3_1");
+					put(grammarAccess.getPhysicalNodeAccess().getPerformanceAssignment_9(), "rule__PhysicalNode__PerformanceAssignment_9");
+					put(grammarAccess.getPhysicalNodeAccess().getInterfacesAssignment_10_2(), "rule__PhysicalNode__InterfacesAssignment_10_2");
+					put(grammarAccess.getPhysicalNodeAccess().getInterfacesAssignment_10_3_1(), "rule__PhysicalNode__InterfacesAssignment_10_3_1");
+					put(grammarAccess.getPhysicalLinkAccess().getIdAssignment_1(), "rule__PhysicalLink__IdAssignment_1");
+					put(grammarAccess.getPhysicalLinkAccess().getNameAssignment_4(), "rule__PhysicalLink__NameAssignment_4");
+					put(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesAssignment_5_2(), "rule__PhysicalLink__AlternativeNamesAssignment_5_2");
+					put(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesAssignment_5_3_1(), "rule__PhysicalLink__AlternativeNamesAssignment_5_3_1");
+					put(grammarAccess.getPhysicalLinkAccess().getConnectsAssignment_8(), "rule__PhysicalLink__ConnectsAssignment_8");
+					put(grammarAccess.getPhysicalLinkAccess().getConnectsAssignment_9_1(), "rule__PhysicalLink__ConnectsAssignment_9_1");
+					put(grammarAccess.getPhysicalLinkAccess().getPerformanceAssignment_12(), "rule__PhysicalLink__PerformanceAssignment_12");
+					put(grammarAccess.getVirtualLinkAccess().getIdAssignment_1(), "rule__VirtualLink__IdAssignment_1");
+					put(grammarAccess.getVirtualLinkAccess().getNameAssignment_4(), "rule__VirtualLink__NameAssignment_4");
+					put(grammarAccess.getVirtualLinkAccess().getAlternativeNamesAssignment_5_2(), "rule__VirtualLink__AlternativeNamesAssignment_5_2");
+					put(grammarAccess.getVirtualLinkAccess().getAlternativeNamesAssignment_5_3_1(), "rule__VirtualLink__AlternativeNamesAssignment_5_3_1");
+					put(grammarAccess.getVirtualLinkAccess().getConnectsAssignment_8(), "rule__VirtualLink__ConnectsAssignment_8");
+					put(grammarAccess.getVirtualLinkAccess().getConnectsAssignment_9_1(), "rule__VirtualLink__ConnectsAssignment_9_1");
+					put(grammarAccess.getVirtualLinkAccess().getPerformanceAssignment_12(), "rule__VirtualLink__PerformanceAssignment_12");
+					put(grammarAccess.getProtocolsRepositoryAccess().getStacksAssignment_2_2(), "rule__ProtocolsRepository__StacksAssignment_2_2");
+					put(grammarAccess.getProtocolsRepositoryAccess().getStacksAssignment_2_3_1(), "rule__ProtocolsRepository__StacksAssignment_2_3_1");
+					put(grammarAccess.getProtocolsRepositoryAccess().getProtocolsAssignment_5(), "rule__ProtocolsRepository__ProtocolsAssignment_5");
+					put(grammarAccess.getProtocolsRepositoryAccess().getProtocolsAssignment_6_1(), "rule__ProtocolsRepository__ProtocolsAssignment_6_1");
+					put(grammarAccess.getRoutesRepositoryAccess().getRoutesAssignment_3_2(), "rule__RoutesRepository__RoutesAssignment_3_2");
+					put(grammarAccess.getRoutesRepositoryAccess().getRoutesAssignment_3_3_1(), "rule__RoutesRepository__RoutesAssignment_3_3_1");
+					put(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesAssignment_4_2(), "rule__RoutesRepository__FlowRoutesAssignment_4_2");
+					put(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesAssignment_4_3_1(), "rule__RoutesRepository__FlowRoutesAssignment_4_3_1");
+					put(grammarAccess.getRoutesRepositoryAccess().getDirectionsAssignment_5_2(), "rule__RoutesRepository__DirectionsAssignment_5_2");
+					put(grammarAccess.getRoutesRepositoryAccess().getDirectionsAssignment_5_3_1(), "rule__RoutesRepository__DirectionsAssignment_5_3_1");
+					put(grammarAccess.getProtocolStackAccess().getNameAssignment_1(), "rule__ProtocolStack__NameAssignment_1");
+					put(grammarAccess.getProtocolStackAccess().getAlternativeNamesAssignment_3_2(), "rule__ProtocolStack__AlternativeNamesAssignment_3_2");
+					put(grammarAccess.getProtocolStackAccess().getAlternativeNamesAssignment_3_3_1(), "rule__ProtocolStack__AlternativeNamesAssignment_3_3_1");
+					put(grammarAccess.getProtocolStackAccess().getLayersAssignment_6(), "rule__ProtocolStack__LayersAssignment_6");
+					put(grammarAccess.getProtocolStackAccess().getLayersAssignment_7_1(), "rule__ProtocolStack__LayersAssignment_7_1");
+					put(grammarAccess.getProtocolLayerAccess().getNameAssignment_1(), "rule__ProtocolLayer__NameAssignment_1");
+					put(grammarAccess.getProtocolLayerAccess().getAlternativeNamesAssignment_3_2(), "rule__ProtocolLayer__AlternativeNamesAssignment_3_2");
+					put(grammarAccess.getProtocolLayerAccess().getAlternativeNamesAssignment_3_3_1(), "rule__ProtocolLayer__AlternativeNamesAssignment_3_3_1");
+					put(grammarAccess.getProtocolLayerAccess().getProtocolAssignment_5(), "rule__ProtocolLayer__ProtocolAssignment_5");
+					put(grammarAccess.getProtocolLayerAccess().getIsCarriedByAssignment_6_1(), "rule__ProtocolLayer__IsCarriedByAssignment_6_1");
+					put(grammarAccess.getProtocolLayerAccess().getCarriesAssignment_7_1(), "rule__ProtocolLayer__CarriesAssignment_7_1");
+					put(grammarAccess.getRouteAccess().getIdAssignment_1(), "rule__Route__IdAssignment_1");
+					put(grammarAccess.getRouteAccess().getNameAssignment_4(), "rule__Route__NameAssignment_4");
+					put(grammarAccess.getRouteAccess().getAlternativeNamesAssignment_5_2(), "rule__Route__AlternativeNamesAssignment_5_2");
+					put(grammarAccess.getRouteAccess().getAlternativeNamesAssignment_5_3_1(), "rule__Route__AlternativeNamesAssignment_5_3_1");
+					put(grammarAccess.getRouteAccess().getNumHopsAssignment_6_1(), "rule__Route__NumHopsAssignment_6_1");
+					put(grammarAccess.getRouteAccess().getStartAssignment_8(), "rule__Route__StartAssignment_8");
+					put(grammarAccess.getRouteAccess().getEndAssignment_10(), "rule__Route__EndAssignment_10");
+					put(grammarAccess.getRouteAccess().getHopsAssignment_11_1(), "rule__Route__HopsAssignment_11_1");
+					put(grammarAccess.getFlowRouteAccess().getIdAssignment_1(), "rule__FlowRoute__IdAssignment_1");
+					put(grammarAccess.getFlowRouteAccess().getNameAssignment_4(), "rule__FlowRoute__NameAssignment_4");
+					put(grammarAccess.getFlowRouteAccess().getAlternativeNamesAssignment_5_2(), "rule__FlowRoute__AlternativeNamesAssignment_5_2");
+					put(grammarAccess.getFlowRouteAccess().getAlternativeNamesAssignment_5_3_1(), "rule__FlowRoute__AlternativeNamesAssignment_5_3_1");
+					put(grammarAccess.getFlowRouteAccess().getNumHopsAssignment_6_1(), "rule__FlowRoute__NumHopsAssignment_6_1");
+					put(grammarAccess.getFlowRouteAccess().getFlowAssignment_8(), "rule__FlowRoute__FlowAssignment_8");
+					put(grammarAccess.getFlowRouteAccess().getStartAssignment_10(), "rule__FlowRoute__StartAssignment_10");
+					put(grammarAccess.getFlowRouteAccess().getEndAssignment_12(), "rule__FlowRoute__EndAssignment_12");
+					put(grammarAccess.getFlowRouteAccess().getHopsAssignment_13_1(), "rule__FlowRoute__HopsAssignment_13_1");
+					put(grammarAccess.getDirectionAccess().getIsDefaultAssignment_0(), "rule__Direction__IsDefaultAssignment_0");
+					put(grammarAccess.getDirectionAccess().getIdAssignment_2(), "rule__Direction__IdAssignment_2");
+					put(grammarAccess.getDirectionAccess().getNameAssignment_5(), "rule__Direction__NameAssignment_5");
+					put(grammarAccess.getDirectionAccess().getAlternativeNamesAssignment_6_2(), "rule__Direction__AlternativeNamesAssignment_6_2");
+					put(grammarAccess.getDirectionAccess().getAlternativeNamesAssignment_6_3_1(), "rule__Direction__AlternativeNamesAssignment_6_3_1");
+					put(grammarAccess.getDirectionAccess().getDistanceAssignment_7_1(), "rule__Direction__DistanceAssignment_7_1");
+					put(grammarAccess.getDirectionAccess().getOnNodeAssignment_9(), "rule__Direction__OnNodeAssignment_9");
+					put(grammarAccess.getDirectionAccess().getFlowAssignment_10_1(), "rule__Direction__FlowAssignment_10_1");
+					put(grammarAccess.getDirectionAccess().getViaAssignment_12(), "rule__Direction__ViaAssignment_12");
+					put(grammarAccess.getHopAccess().getInterfacerefAssignment_3(), "rule__Hop__InterfacerefAssignment_3");
+					put(grammarAccess.getHopAccess().getNextHopAssignment_4_1(), "rule__Hop__NextHopAssignment_4_1");
+					put(grammarAccess.getPhysicalNetworkInterfaceAccess().getIdAssignment_1(), "rule__PhysicalNetworkInterface__IdAssignment_1");
+					put(grammarAccess.getPhysicalNetworkInterfaceAccess().getNameAssignment_4(), "rule__PhysicalNetworkInterface__NameAssignment_4");
+					put(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesAssignment_5_2(), "rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_2");
+					put(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesAssignment_5_3_1(), "rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_1");
+					put(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackAssignment_7(), "rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_7");
+					put(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesAssignment_8_2(), "rule__PhysicalNetworkInterface__AddressesAssignment_8_2");
+					put(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesAssignment_8_3_1(), "rule__PhysicalNetworkInterface__AddressesAssignment_8_3_1");
+					put(grammarAccess.getPhysicalNetworkInterfaceAccess().getPerformanceAssignment_10(), "rule__PhysicalNetworkInterface__PerformanceAssignment_10");
+					put(grammarAccess.getVirtualNetworkInterfaceAccess().getIdAssignment_1(), "rule__VirtualNetworkInterface__IdAssignment_1");
+					put(grammarAccess.getVirtualNetworkInterfaceAccess().getNameAssignment_4(), "rule__VirtualNetworkInterface__NameAssignment_4");
+					put(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesAssignment_5_2(), "rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_2");
+					put(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesAssignment_5_3_1(), "rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_1");
+					put(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackAssignment_7(), "rule__VirtualNetworkInterface__UsedProtocolStackAssignment_7");
+					put(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesAssignment_8_2(), "rule__VirtualNetworkInterface__AddressesAssignment_8_2");
+					put(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesAssignment_8_3_1(), "rule__VirtualNetworkInterface__AddressesAssignment_8_3_1");
+					put(grammarAccess.getVirtualNetworkInterfaceAccess().getPerformanceAssignment_10(), "rule__VirtualNetworkInterface__PerformanceAssignment_10");
+				}
+			};
+		}
+		return nameMappings.get(element);
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		try {
+			tools.descatres.dml.dni.text.ui.contentassist.antlr.internal.InternalDNITextParser typedParser = (tools.descatres.dml.dni.text.ui.contentassist.antlr.internal.InternalDNITextParser) parser;
+			typedParser.entryRuleNetworkInfrastructure();
+			return typedParser.getFollowElements();
+		} catch(RecognitionException ex) {
+			throw new RuntimeException(ex);
+		}		
+	}
+	
+	@Override
+	protected String[] getInitialHiddenTokens() {
+		return new String[] { "RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT" };
+	}
+	
+	public DNITextGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(DNITextGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
diff --git a/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/PartialDNITextContentAssistParser.java b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/PartialDNITextContentAssistParser.java
new file mode 100644
index 00000000..4ec71bfd
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/PartialDNITextContentAssistParser.java
@@ -0,0 +1,38 @@
+/*
+ * generated by Xtext
+ */
+package tools.descatres.dml.dni.text.ui.contentassist.antlr;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import org.eclipse.xtext.AbstractRule;
+import org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.util.PolymorphicDispatcher;
+
+/*
+ * Template CodetemplatesGeneratorFragment.xpt
+ */
+public class PartialDNITextContentAssistParser extends DNITextParser implements IPartialContentAssistParser {
+
+	private AbstractRule rule;
+
+	@Override
+	public void initializeFor(AbstractRule rule) {
+		this.rule = rule;
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		if (rule == null || rule.eIsProxy())
+			return Collections.emptyList();
+		String methodName = "entryRule" + rule.getName();
+		PolymorphicDispatcher<Collection<FollowElement>> dispatcher = 
+			new PolymorphicDispatcher<Collection<FollowElement>>(methodName, 0, 0, Collections.singletonList(parser));
+		dispatcher.invoke();
+		return parser.getFollowElements();
+	}
+
+}
diff --git a/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g
new file mode 100644
index 00000000..6d3d2979
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g
@@ -0,0 +1,31204 @@
+/*
+ * generated by Xtext
+ */
+grammar InternalDNIText;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	
+}
+
+@lexer::header {
+package tools.descatres.dml.dni.text.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+}
+
+@parser::header {
+package tools.descatres.dml.dni.text.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import tools.descatres.dml.dni.text.services.DNITextGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private DNITextGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(DNITextGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleNetworkInfrastructure
+entryRuleNetworkInfrastructure 
+:
+{ before(grammarAccess.getNetworkInfrastructureRule()); }
+	 ruleNetworkInfrastructure
+{ after(grammarAccess.getNetworkInfrastructureRule()); } 
+	 EOF 
+;
+
+// Rule NetworkInfrastructure
+ruleNetworkInfrastructure
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getGroup()); }
+(rule__NetworkInfrastructure__Group__0)
+{ after(grammarAccess.getNetworkInfrastructureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFlow
+entryRuleFlow 
+:
+{ before(grammarAccess.getFlowRule()); }
+	 ruleFlow
+{ after(grammarAccess.getFlowRule()); } 
+	 EOF 
+;
+
+// Rule Flow
+ruleFlow
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFlowAccess().getAlternatives()); }
+(rule__Flow__Alternatives)
+{ after(grammarAccess.getFlowAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNode
+entryRuleNode 
+:
+{ before(grammarAccess.getNodeRule()); }
+	 ruleNode
+{ after(grammarAccess.getNodeRule()); } 
+	 EOF 
+;
+
+// Rule Node
+ruleNode
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNodeAccess().getAlternatives()); }
+(rule__Node__Alternatives)
+{ after(grammarAccess.getNodeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLink
+entryRuleLink 
+:
+{ before(grammarAccess.getLinkRule()); }
+	 ruleLink
+{ after(grammarAccess.getLinkRule()); } 
+	 EOF 
+;
+
+// Rule Link
+ruleLink
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLinkAccess().getAlternatives()); }
+(rule__Link__Alternatives)
+{ after(grammarAccess.getLinkAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDependency
+entryRuleDependency 
+:
+{ before(grammarAccess.getDependencyRule()); }
+	 ruleDependency
+{ after(grammarAccess.getDependencyRule()); } 
+	 EOF 
+;
+
+// Rule Dependency
+ruleDependency
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDependencyAccess().getAlternatives()); }
+(rule__Dependency__Alternatives)
+{ after(grammarAccess.getDependencyAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDNIUnit
+entryRuleDNIUnit 
+:
+{ before(grammarAccess.getDNIUnitRule()); }
+	 ruleDNIUnit
+{ after(grammarAccess.getDNIUnitRule()); } 
+	 EOF 
+;
+
+// Rule DNIUnit
+ruleDNIUnit
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDNIUnitAccess().getSpeedUnitParserRuleCall()); }
+	ruleSpeedUnit
+{ after(grammarAccess.getDNIUnitAccess().getSpeedUnitParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFunction
+entryRuleFunction 
+:
+{ before(grammarAccess.getFunctionRule()); }
+	 ruleFunction
+{ after(grammarAccess.getFunctionRule()); } 
+	 EOF 
+;
+
+// Rule Function
+ruleFunction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFunctionAccess().getAlternatives()); }
+(rule__Function__Alternatives)
+{ after(grammarAccess.getFunctionAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleWorkload
+entryRuleWorkload 
+:
+{ before(grammarAccess.getWorkloadRule()); }
+	 ruleWorkload
+{ after(grammarAccess.getWorkloadRule()); } 
+	 EOF 
+;
+
+// Rule Workload
+ruleWorkload
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getWorkloadAccess().getGenericWorkloadParserRuleCall()); }
+	ruleGenericWorkload
+{ after(grammarAccess.getWorkloadAccess().getGenericWorkloadParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAbstractAction
+entryRuleAbstractAction 
+:
+{ before(grammarAccess.getAbstractActionRule()); }
+	 ruleAbstractAction
+{ after(grammarAccess.getAbstractActionRule()); } 
+	 EOF 
+;
+
+// Rule AbstractAction
+ruleAbstractAction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAbstractActionAccess().getAlternatives()); }
+(rule__AbstractAction__Alternatives)
+{ after(grammarAccess.getAbstractActionAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePerformanceSpecification
+entryRulePerformanceSpecification 
+:
+{ before(grammarAccess.getPerformanceSpecificationRule()); }
+	 rulePerformanceSpecification
+{ after(grammarAccess.getPerformanceSpecificationRule()); } 
+	 EOF 
+;
+
+// Rule PerformanceSpecification
+rulePerformanceSpecification
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPerformanceSpecificationAccess().getAlternatives()); }
+(rule__PerformanceSpecification__Alternatives)
+{ after(grammarAccess.getPerformanceSpecificationAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNetworkInterfacePerfSpec
+entryRuleNetworkInterfacePerfSpec 
+:
+{ before(grammarAccess.getNetworkInterfacePerfSpecRule()); }
+	 ruleNetworkInterfacePerfSpec
+{ after(grammarAccess.getNetworkInterfacePerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule NetworkInterfacePerfSpec
+ruleNetworkInterfacePerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNetworkInterfacePerfSpecAccess().getAlternatives()); }
+(rule__NetworkInterfacePerfSpec__Alternatives)
+{ after(grammarAccess.getNetworkInterfacePerfSpecAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleVirtualNetworkInterfacePerfSpec
+entryRuleVirtualNetworkInterfacePerfSpec 
+:
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecRule()); }
+	 ruleVirtualNetworkInterfacePerfSpec
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule VirtualNetworkInterfacePerfSpec
+ruleVirtualNetworkInterfacePerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getGroup()); }
+(rule__VirtualNetworkInterfacePerfSpec__Group__0)
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePhysicalNetworkInterfacePerfSpec
+entryRulePhysicalNetworkInterfacePerfSpec 
+:
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecRule()); }
+	 rulePhysicalNetworkInterfacePerfSpec
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule PhysicalNetworkInterfacePerfSpec
+rulePhysicalNetworkInterfacePerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getGroup()); }
+(rule__PhysicalNetworkInterfacePerfSpec__Group__0)
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLinkPerfSpec
+entryRuleLinkPerfSpec 
+:
+{ before(grammarAccess.getLinkPerfSpecRule()); }
+	 ruleLinkPerfSpec
+{ after(grammarAccess.getLinkPerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule LinkPerfSpec
+ruleLinkPerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLinkPerfSpecAccess().getAlternatives()); }
+(rule__LinkPerfSpec__Alternatives)
+{ after(grammarAccess.getLinkPerfSpecAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleVirtualLinkPerfSpec
+entryRuleVirtualLinkPerfSpec 
+:
+{ before(grammarAccess.getVirtualLinkPerfSpecRule()); }
+	 ruleVirtualLinkPerfSpec
+{ after(grammarAccess.getVirtualLinkPerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule VirtualLinkPerfSpec
+ruleVirtualLinkPerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getGroup()); }
+(rule__VirtualLinkPerfSpec__Group__0)
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePhysicalLinkPerfSpec
+entryRulePhysicalLinkPerfSpec 
+:
+{ before(grammarAccess.getPhysicalLinkPerfSpecRule()); }
+	 rulePhysicalLinkPerfSpec
+{ after(grammarAccess.getPhysicalLinkPerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule PhysicalLinkPerfSpec
+rulePhysicalLinkPerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getGroup()); }
+(rule__PhysicalLinkPerfSpec__Group__0)
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleIntermediateNodePerfSpec
+entryRuleIntermediateNodePerfSpec 
+:
+{ before(grammarAccess.getIntermediateNodePerfSpecRule()); }
+	 ruleIntermediateNodePerfSpec
+{ after(grammarAccess.getIntermediateNodePerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule IntermediateNodePerfSpec
+ruleIntermediateNodePerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getGroup()); }
+(rule__IntermediateNodePerfSpec__Group__0)
+{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleControlPlanePerfSpec
+entryRuleControlPlanePerfSpec 
+:
+{ before(grammarAccess.getControlPlanePerfSpecRule()); }
+	 ruleControlPlanePerfSpec
+{ after(grammarAccess.getControlPlanePerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule ControlPlanePerfSpec
+ruleControlPlanePerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getGroup()); }
+(rule__ControlPlanePerfSpec__Group__0)
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDataPlanePerfSpec
+entryRuleDataPlanePerfSpec 
+:
+{ before(grammarAccess.getDataPlanePerfSpecRule()); }
+	 ruleDataPlanePerfSpec
+{ after(grammarAccess.getDataPlanePerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule DataPlanePerfSpec
+ruleDataPlanePerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getGroup()); }
+(rule__DataPlanePerfSpec__Group__0)
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEndNodePerfSpec
+entryRuleEndNodePerfSpec 
+:
+{ before(grammarAccess.getEndNodePerfSpecRule()); }
+	 ruleEndNodePerfSpec
+{ after(grammarAccess.getEndNodePerfSpecRule()); } 
+	 EOF 
+;
+
+// Rule EndNodePerfSpec
+ruleEndNodePerfSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getGroup()); }
+(rule__EndNodePerfSpec__Group__0)
+{ after(grammarAccess.getEndNodePerfSpecAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNetworkInterface
+entryRuleNetworkInterface 
+:
+{ before(grammarAccess.getNetworkInterfaceRule()); }
+	 ruleNetworkInterface
+{ after(grammarAccess.getNetworkInterfaceRule()); } 
+	 EOF 
+;
+
+// Rule NetworkInterface
+ruleNetworkInterface
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNetworkInterfaceAccess().getAlternatives()); }
+(rule__NetworkInterface__Alternatives)
+{ after(grammarAccess.getNetworkInterfaceAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNetworkTraffic
+entryRuleNetworkTraffic 
+:
+{ before(grammarAccess.getNetworkTrafficRule()); }
+	 ruleNetworkTraffic
+{ after(grammarAccess.getNetworkTrafficRule()); } 
+	 EOF 
+;
+
+// Rule NetworkTraffic
+ruleNetworkTraffic
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getGroup()); }
+(rule__NetworkTraffic__Group__0)
+{ after(grammarAccess.getNetworkTrafficAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNetworkStructure
+entryRuleNetworkStructure 
+:
+{ before(grammarAccess.getNetworkStructureRule()); }
+	 ruleNetworkStructure
+{ after(grammarAccess.getNetworkStructureRule()); } 
+	 EOF 
+;
+
+// Rule NetworkStructure
+ruleNetworkStructure
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getGroup()); }
+(rule__NetworkStructure__Group__0)
+{ after(grammarAccess.getNetworkStructureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNetworkConfiguration
+entryRuleNetworkConfiguration 
+:
+{ before(grammarAccess.getNetworkConfigurationRule()); }
+	 ruleNetworkConfiguration
+{ after(grammarAccess.getNetworkConfigurationRule()); } 
+	 EOF 
+;
+
+// Rule NetworkConfiguration
+ruleNetworkConfiguration
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getGroup()); }
+(rule__NetworkConfiguration__Group__0)
+{ after(grammarAccess.getNetworkConfigurationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleExperimentParam
+entryRuleExperimentParam 
+:
+{ before(grammarAccess.getExperimentParamRule()); }
+	 ruleExperimentParam
+{ after(grammarAccess.getExperimentParamRule()); } 
+	 EOF 
+;
+
+// Rule ExperimentParam
+ruleExperimentParam
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getExperimentParamAccess().getGroup()); }
+(rule__ExperimentParam__Group__0)
+{ after(grammarAccess.getExperimentParamAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEString
+entryRuleEString 
+:
+{ before(grammarAccess.getEStringRule()); }
+	 ruleEString
+{ after(grammarAccess.getEStringRule()); } 
+	 EOF 
+;
+
+// Rule EString
+ruleEString
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEStringAccess().getAlternatives()); }
+(rule__EString__Alternatives)
+{ after(grammarAccess.getEStringAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSoftwareComponent
+entryRuleSoftwareComponent 
+:
+{ before(grammarAccess.getSoftwareComponentRule()); }
+	 ruleSoftwareComponent
+{ after(grammarAccess.getSoftwareComponentRule()); } 
+	 EOF 
+;
+
+// Rule SoftwareComponent
+ruleSoftwareComponent
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getGroup()); }
+(rule__SoftwareComponent__Group__0)
+{ after(grammarAccess.getSoftwareComponentAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEntityAddress
+entryRuleEntityAddress 
+:
+{ before(grammarAccess.getEntityAddressRule()); }
+	 ruleEntityAddress
+{ after(grammarAccess.getEntityAddressRule()); } 
+	 EOF 
+;
+
+// Rule EntityAddress
+ruleEntityAddress
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEntityAddressAccess().getGroup()); }
+(rule__EntityAddress__Group__0)
+{ after(grammarAccess.getEntityAddressAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleONOFFFlow
+entryRuleONOFFFlow 
+:
+{ before(grammarAccess.getONOFFFlowRule()); }
+	 ruleONOFFFlow
+{ after(grammarAccess.getONOFFFlowRule()); } 
+	 EOF 
+;
+
+// Rule ONOFFFlow
+ruleONOFFFlow
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getGroup()); }
+(rule__ONOFFFlow__Group__0)
+{ after(grammarAccess.getONOFFFlowAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleGenericFlow
+entryRuleGenericFlow 
+:
+{ before(grammarAccess.getGenericFlowRule()); }
+	 ruleGenericFlow
+{ after(grammarAccess.getGenericFlowRule()); } 
+	 EOF 
+;
+
+// Rule GenericFlow
+ruleGenericFlow
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getGenericFlowAccess().getGroup()); }
+(rule__GenericFlow__Group__0)
+{ after(grammarAccess.getGenericFlowAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNetworkProtocol
+entryRuleNetworkProtocol 
+:
+{ before(grammarAccess.getNetworkProtocolRule()); }
+	 ruleNetworkProtocol
+{ after(grammarAccess.getNetworkProtocolRule()); } 
+	 EOF 
+;
+
+// Rule NetworkProtocol
+ruleNetworkProtocol
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getGroup()); }
+(rule__NetworkProtocol__Group__0)
+{ after(grammarAccess.getNetworkProtocolAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEInt
+entryRuleEInt 
+:
+{ before(grammarAccess.getEIntRule()); }
+	 ruleEInt
+{ after(grammarAccess.getEIntRule()); } 
+	 EOF 
+;
+
+// Rule EInt
+ruleEInt
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEIntAccess().getGroup()); }
+(rule__EInt__Group__0)
+{ after(grammarAccess.getEIntAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEBoolean
+entryRuleEBoolean 
+:
+{ before(grammarAccess.getEBooleanRule()); }
+	 ruleEBoolean
+{ after(grammarAccess.getEBooleanRule()); } 
+	 EOF 
+;
+
+// Rule EBoolean
+ruleEBoolean
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEBooleanAccess().getAlternatives()); }
+(rule__EBoolean__Alternatives)
+{ after(grammarAccess.getEBooleanAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleConstantDoubleVariable
+entryRuleConstantDoubleVariable 
+:
+{ before(grammarAccess.getConstantDoubleVariableRule()); }
+	 ruleConstantDoubleVariable
+{ after(grammarAccess.getConstantDoubleVariableRule()); } 
+	 EOF 
+;
+
+// Rule ConstantDoubleVariable
+ruleConstantDoubleVariable
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getGroup()); }
+(rule__ConstantDoubleVariable__Group__0)
+{ after(grammarAccess.getConstantDoubleVariableAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleConstantLongVariable
+entryRuleConstantLongVariable 
+:
+{ before(grammarAccess.getConstantLongVariableRule()); }
+	 ruleConstantLongVariable
+{ after(grammarAccess.getConstantLongVariableRule()); } 
+	 EOF 
+;
+
+// Rule ConstantLongVariable
+ruleConstantLongVariable
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getGroup()); }
+(rule__ConstantLongVariable__Group__0)
+{ after(grammarAccess.getConstantLongVariableAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRandomVariable
+entryRuleRandomVariable 
+:
+{ before(grammarAccess.getRandomVariableRule()); }
+	 ruleRandomVariable
+{ after(grammarAccess.getRandomVariableRule()); } 
+	 EOF 
+;
+
+// Rule RandomVariable
+ruleRandomVariable
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRandomVariableAccess().getGroup()); }
+(rule__RandomVariable__Group__0)
+{ after(grammarAccess.getRandomVariableAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleContinuousFunction
+entryRuleContinuousFunction 
+:
+{ before(grammarAccess.getContinuousFunctionRule()); }
+	 ruleContinuousFunction
+{ after(grammarAccess.getContinuousFunctionRule()); } 
+	 EOF 
+;
+
+// Rule ContinuousFunction
+ruleContinuousFunction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getGroup()); }
+(rule__ContinuousFunction__Group__0)
+{ after(grammarAccess.getContinuousFunctionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDiscreteFunction
+entryRuleDiscreteFunction 
+:
+{ before(grammarAccess.getDiscreteFunctionRule()); }
+	 ruleDiscreteFunction
+{ after(grammarAccess.getDiscreteFunctionRule()); } 
+	 EOF 
+;
+
+// Rule DiscreteFunction
+ruleDiscreteFunction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getGroup()); }
+(rule__DiscreteFunction__Group__0)
+{ after(grammarAccess.getDiscreteFunctionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEFloat
+entryRuleEFloat 
+:
+{ before(grammarAccess.getEFloatRule()); }
+	 ruleEFloat
+{ after(grammarAccess.getEFloatRule()); } 
+	 EOF 
+;
+
+// Rule EFloat
+ruleEFloat
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEFloatAccess().getGroup()); }
+(rule__EFloat__Group__0)
+{ after(grammarAccess.getEFloatAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSpeedUnit
+entryRuleSpeedUnit 
+:
+{ before(grammarAccess.getSpeedUnitRule()); }
+	 ruleSpeedUnit
+{ after(grammarAccess.getSpeedUnitRule()); } 
+	 EOF 
+;
+
+// Rule SpeedUnit
+ruleSpeedUnit
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getGroup()); }
+(rule__SpeedUnit__Group__0)
+{ after(grammarAccess.getSpeedUnitAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEDouble
+entryRuleEDouble 
+:
+{ before(grammarAccess.getEDoubleRule()); }
+	 ruleEDouble
+{ after(grammarAccess.getEDoubleRule()); } 
+	 EOF 
+;
+
+// Rule EDouble
+ruleEDouble
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEDoubleAccess().getGroup()); }
+(rule__EDouble__Group__0)
+{ after(grammarAccess.getEDoubleAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleELong
+entryRuleELong 
+:
+{ before(grammarAccess.getELongRule()); }
+	 ruleELong
+{ after(grammarAccess.getELongRule()); } 
+	 EOF 
+;
+
+// Rule ELong
+ruleELong
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getELongAccess().getGroup()); }
+(rule__ELong__Group__0)
+{ after(grammarAccess.getELongAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDataSeries
+entryRuleDataSeries 
+:
+{ before(grammarAccess.getDataSeriesRule()); }
+	 ruleDataSeries
+{ after(grammarAccess.getDataSeriesRule()); } 
+	 EOF 
+;
+
+// Rule DataSeries
+ruleDataSeries
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDataSeriesAccess().getGroup()); }
+(rule__DataSeries__Group__0)
+{ after(grammarAccess.getDataSeriesAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTrafficSource
+entryRuleTrafficSource 
+:
+{ before(grammarAccess.getTrafficSourceRule()); }
+	 ruleTrafficSource
+{ after(grammarAccess.getTrafficSourceRule()); } 
+	 EOF 
+;
+
+// Rule TrafficSource
+ruleTrafficSource
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getGroup()); }
+(rule__TrafficSource__Group__0)
+{ after(grammarAccess.getTrafficSourceAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleGenericWorkload
+entryRuleGenericWorkload 
+:
+{ before(grammarAccess.getGenericWorkloadRule()); }
+	 ruleGenericWorkload
+{ after(grammarAccess.getGenericWorkloadRule()); } 
+	 EOF 
+;
+
+// Rule GenericWorkload
+ruleGenericWorkload
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getGroup()); }
+(rule__GenericWorkload__Group__0)
+{ after(grammarAccess.getGenericWorkloadAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBranchAction
+entryRuleBranchAction 
+:
+{ before(grammarAccess.getBranchActionRule()); }
+	 ruleBranchAction
+{ after(grammarAccess.getBranchActionRule()); } 
+	 EOF 
+;
+
+// Rule BranchAction
+ruleBranchAction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBranchActionAccess().getGroup()); }
+(rule__BranchAction__Group__0)
+{ after(grammarAccess.getBranchActionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLoopAction
+entryRuleLoopAction 
+:
+{ before(grammarAccess.getLoopActionRule()); }
+	 ruleLoopAction
+{ after(grammarAccess.getLoopActionRule()); } 
+	 EOF 
+;
+
+// Rule LoopAction
+ruleLoopAction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLoopActionAccess().getGroup()); }
+(rule__LoopAction__Group__0)
+{ after(grammarAccess.getLoopActionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSequenceAction
+entryRuleSequenceAction 
+:
+{ before(grammarAccess.getSequenceActionRule()); }
+	 ruleSequenceAction
+{ after(grammarAccess.getSequenceActionRule()); } 
+	 EOF 
+;
+
+// Rule SequenceAction
+ruleSequenceAction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSequenceActionAccess().getGroup()); }
+(rule__SequenceAction__Group__0)
+{ after(grammarAccess.getSequenceActionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStartAction
+entryRuleStartAction 
+:
+{ before(grammarAccess.getStartActionRule()); }
+	 ruleStartAction
+{ after(grammarAccess.getStartActionRule()); } 
+	 EOF 
+;
+
+// Rule StartAction
+ruleStartAction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStartActionAccess().getGroup()); }
+(rule__StartAction__Group__0)
+{ after(grammarAccess.getStartActionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleStopAction
+entryRuleStopAction 
+:
+{ before(grammarAccess.getStopActionRule()); }
+	 ruleStopAction
+{ after(grammarAccess.getStopActionRule()); } 
+	 EOF 
+;
+
+// Rule StopAction
+ruleStopAction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getStopActionAccess().getGroup()); }
+(rule__StopAction__Group__0)
+{ after(grammarAccess.getStopActionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTransmitAction
+entryRuleTransmitAction 
+:
+{ before(grammarAccess.getTransmitActionRule()); }
+	 ruleTransmitAction
+{ after(grammarAccess.getTransmitActionRule()); } 
+	 EOF 
+;
+
+// Rule TransmitAction
+ruleTransmitAction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTransmitActionAccess().getGroup()); }
+(rule__TransmitAction__Group__0)
+{ after(grammarAccess.getTransmitActionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleWaitAction
+entryRuleWaitAction 
+:
+{ before(grammarAccess.getWaitActionRule()); }
+	 ruleWaitAction
+{ after(grammarAccess.getWaitActionRule()); } 
+	 EOF 
+;
+
+// Rule WaitAction
+ruleWaitAction
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getWaitActionAccess().getGroup()); }
+(rule__WaitAction__Group__0)
+{ after(grammarAccess.getWaitActionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleVirtualNode
+entryRuleVirtualNode 
+:
+{ before(grammarAccess.getVirtualNodeRule()); }
+	 ruleVirtualNode
+{ after(grammarAccess.getVirtualNodeRule()); } 
+	 EOF 
+;
+
+// Rule VirtualNode
+ruleVirtualNode
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getGroup()); }
+(rule__VirtualNode__Group__0)
+{ after(grammarAccess.getVirtualNodeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePhysicalNode
+entryRulePhysicalNode 
+:
+{ before(grammarAccess.getPhysicalNodeRule()); }
+	 rulePhysicalNode
+{ after(grammarAccess.getPhysicalNodeRule()); } 
+	 EOF 
+;
+
+// Rule PhysicalNode
+rulePhysicalNode
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getGroup()); }
+(rule__PhysicalNode__Group__0)
+{ after(grammarAccess.getPhysicalNodeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePhysicalLink
+entryRulePhysicalLink 
+:
+{ before(grammarAccess.getPhysicalLinkRule()); }
+	 rulePhysicalLink
+{ after(grammarAccess.getPhysicalLinkRule()); } 
+	 EOF 
+;
+
+// Rule PhysicalLink
+rulePhysicalLink
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getGroup()); }
+(rule__PhysicalLink__Group__0)
+{ after(grammarAccess.getPhysicalLinkAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleVirtualLink
+entryRuleVirtualLink 
+:
+{ before(grammarAccess.getVirtualLinkRule()); }
+	 ruleVirtualLink
+{ after(grammarAccess.getVirtualLinkRule()); } 
+	 EOF 
+;
+
+// Rule VirtualLink
+ruleVirtualLink
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getGroup()); }
+(rule__VirtualLink__Group__0)
+{ after(grammarAccess.getVirtualLinkAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleProtocolsRepository
+entryRuleProtocolsRepository 
+:
+{ before(grammarAccess.getProtocolsRepositoryRule()); }
+	 ruleProtocolsRepository
+{ after(grammarAccess.getProtocolsRepositoryRule()); } 
+	 EOF 
+;
+
+// Rule ProtocolsRepository
+ruleProtocolsRepository
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getGroup()); }
+(rule__ProtocolsRepository__Group__0)
+{ after(grammarAccess.getProtocolsRepositoryAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRoutesRepository
+entryRuleRoutesRepository 
+:
+{ before(grammarAccess.getRoutesRepositoryRule()); }
+	 ruleRoutesRepository
+{ after(grammarAccess.getRoutesRepositoryRule()); } 
+	 EOF 
+;
+
+// Rule RoutesRepository
+ruleRoutesRepository
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getGroup()); }
+(rule__RoutesRepository__Group__0)
+{ after(grammarAccess.getRoutesRepositoryAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleProtocolStack
+entryRuleProtocolStack 
+:
+{ before(grammarAccess.getProtocolStackRule()); }
+	 ruleProtocolStack
+{ after(grammarAccess.getProtocolStackRule()); } 
+	 EOF 
+;
+
+// Rule ProtocolStack
+ruleProtocolStack
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getProtocolStackAccess().getGroup()); }
+(rule__ProtocolStack__Group__0)
+{ after(grammarAccess.getProtocolStackAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleProtocolLayer
+entryRuleProtocolLayer 
+:
+{ before(grammarAccess.getProtocolLayerRule()); }
+	 ruleProtocolLayer
+{ after(grammarAccess.getProtocolLayerRule()); } 
+	 EOF 
+;
+
+// Rule ProtocolLayer
+ruleProtocolLayer
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getGroup()); }
+(rule__ProtocolLayer__Group__0)
+{ after(grammarAccess.getProtocolLayerAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRoute
+entryRuleRoute 
+:
+{ before(grammarAccess.getRouteRule()); }
+	 ruleRoute
+{ after(grammarAccess.getRouteRule()); } 
+	 EOF 
+;
+
+// Rule Route
+ruleRoute
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRouteAccess().getGroup()); }
+(rule__Route__Group__0)
+{ after(grammarAccess.getRouteAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFlowRoute
+entryRuleFlowRoute 
+:
+{ before(grammarAccess.getFlowRouteRule()); }
+	 ruleFlowRoute
+{ after(grammarAccess.getFlowRouteRule()); } 
+	 EOF 
+;
+
+// Rule FlowRoute
+ruleFlowRoute
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFlowRouteAccess().getGroup()); }
+(rule__FlowRoute__Group__0)
+{ after(grammarAccess.getFlowRouteAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDirection
+entryRuleDirection 
+:
+{ before(grammarAccess.getDirectionRule()); }
+	 ruleDirection
+{ after(grammarAccess.getDirectionRule()); } 
+	 EOF 
+;
+
+// Rule Direction
+ruleDirection
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDirectionAccess().getGroup()); }
+(rule__Direction__Group__0)
+{ after(grammarAccess.getDirectionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleHop
+entryRuleHop 
+:
+{ before(grammarAccess.getHopRule()); }
+	 ruleHop
+{ after(grammarAccess.getHopRule()); } 
+	 EOF 
+;
+
+// Rule Hop
+ruleHop
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getHopAccess().getGroup()); }
+(rule__Hop__Group__0)
+{ after(grammarAccess.getHopAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEIntegerObject
+entryRuleEIntegerObject 
+:
+{ before(grammarAccess.getEIntegerObjectRule()); }
+	 ruleEIntegerObject
+{ after(grammarAccess.getEIntegerObjectRule()); } 
+	 EOF 
+;
+
+// Rule EIntegerObject
+ruleEIntegerObject
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEIntegerObjectAccess().getGroup()); }
+(rule__EIntegerObject__Group__0)
+{ after(grammarAccess.getEIntegerObjectAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRulePhysicalNetworkInterface
+entryRulePhysicalNetworkInterface 
+:
+{ before(grammarAccess.getPhysicalNetworkInterfaceRule()); }
+	 rulePhysicalNetworkInterface
+{ after(grammarAccess.getPhysicalNetworkInterfaceRule()); } 
+	 EOF 
+;
+
+// Rule PhysicalNetworkInterface
+rulePhysicalNetworkInterface
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup()); }
+(rule__PhysicalNetworkInterface__Group__0)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleVirtualNetworkInterface
+entryRuleVirtualNetworkInterface 
+:
+{ before(grammarAccess.getVirtualNetworkInterfaceRule()); }
+	 ruleVirtualNetworkInterface
+{ after(grammarAccess.getVirtualNetworkInterfaceRule()); } 
+	 EOF 
+;
+
+// Rule VirtualNetworkInterface
+ruleVirtualNetworkInterface
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup()); }
+(rule__VirtualNetworkInterface__Group__0)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+// Rule UnitPrefix
+ruleUnitPrefix
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUnitPrefixAccess().getAlternatives()); }
+(rule__UnitPrefix__Alternatives)
+{ after(grammarAccess.getUnitPrefixAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule Speed
+ruleSpeed
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedAccess().getAlternatives()); }
+(rule__Speed__Alternatives)
+{ after(grammarAccess.getSpeedAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__Flow__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowAccess().getONOFFFlowParserRuleCall_0()); }
+	ruleONOFFFlow
+{ after(grammarAccess.getFlowAccess().getONOFFFlowParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getFlowAccess().getGenericFlowParserRuleCall_1()); }
+	ruleGenericFlow
+{ after(grammarAccess.getFlowAccess().getGenericFlowParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Node__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNodeAccess().getVirtualNodeParserRuleCall_0()); }
+	ruleVirtualNode
+{ after(grammarAccess.getNodeAccess().getVirtualNodeParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNodeAccess().getPhysicalNodeParserRuleCall_1()); }
+	rulePhysicalNode
+{ after(grammarAccess.getNodeAccess().getPhysicalNodeParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Link__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLinkAccess().getPhysicalLinkParserRuleCall_0()); }
+	rulePhysicalLink
+{ after(grammarAccess.getLinkAccess().getPhysicalLinkParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLinkAccess().getVirtualLinkParserRuleCall_1()); }
+	ruleVirtualLink
+{ after(grammarAccess.getLinkAccess().getVirtualLinkParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Dependency__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDependencyAccess().getConstantDoubleVariableParserRuleCall_0()); }
+	ruleConstantDoubleVariable
+{ after(grammarAccess.getDependencyAccess().getConstantDoubleVariableParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDependencyAccess().getConstantLongVariableParserRuleCall_1()); }
+	ruleConstantLongVariable
+{ after(grammarAccess.getDependencyAccess().getConstantLongVariableParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDependencyAccess().getRandomVariableParserRuleCall_2()); }
+	ruleRandomVariable
+{ after(grammarAccess.getDependencyAccess().getRandomVariableParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getDependencyAccess().getContinuousFunctionParserRuleCall_3()); }
+	ruleContinuousFunction
+{ after(grammarAccess.getDependencyAccess().getContinuousFunctionParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getDependencyAccess().getDiscreteFunctionParserRuleCall_4()); }
+	ruleDiscreteFunction
+{ after(grammarAccess.getDependencyAccess().getDiscreteFunctionParserRuleCall_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Function__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFunctionAccess().getContinuousFunctionParserRuleCall_0()); }
+	ruleContinuousFunction
+{ after(grammarAccess.getFunctionAccess().getContinuousFunctionParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getFunctionAccess().getDiscreteFunctionParserRuleCall_1()); }
+	ruleDiscreteFunction
+{ after(grammarAccess.getFunctionAccess().getDiscreteFunctionParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AbstractAction__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAbstractActionAccess().getBranchActionParserRuleCall_0()); }
+	ruleBranchAction
+{ after(grammarAccess.getAbstractActionAccess().getBranchActionParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAbstractActionAccess().getLoopActionParserRuleCall_1()); }
+	ruleLoopAction
+{ after(grammarAccess.getAbstractActionAccess().getLoopActionParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getAbstractActionAccess().getSequenceActionParserRuleCall_2()); }
+	ruleSequenceAction
+{ after(grammarAccess.getAbstractActionAccess().getSequenceActionParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getAbstractActionAccess().getStartActionParserRuleCall_3()); }
+	ruleStartAction
+{ after(grammarAccess.getAbstractActionAccess().getStartActionParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getAbstractActionAccess().getStopActionParserRuleCall_4()); }
+	ruleStopAction
+{ after(grammarAccess.getAbstractActionAccess().getStopActionParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getAbstractActionAccess().getTransmitActionParserRuleCall_5()); }
+	ruleTransmitAction
+{ after(grammarAccess.getAbstractActionAccess().getTransmitActionParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getAbstractActionAccess().getWaitActionParserRuleCall_6()); }
+	ruleWaitAction
+{ after(grammarAccess.getAbstractActionAccess().getWaitActionParserRuleCall_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PerformanceSpecification__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPerformanceSpecificationAccess().getIntermediateNodePerfSpecParserRuleCall_0()); }
+	ruleIntermediateNodePerfSpec
+{ after(grammarAccess.getPerformanceSpecificationAccess().getIntermediateNodePerfSpecParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getPerformanceSpecificationAccess().getEndNodePerfSpecParserRuleCall_1()); }
+	ruleEndNodePerfSpec
+{ after(grammarAccess.getPerformanceSpecificationAccess().getEndNodePerfSpecParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getPerformanceSpecificationAccess().getLinkPerfSpecParserRuleCall_2()); }
+	ruleLinkPerfSpec
+{ after(grammarAccess.getPerformanceSpecificationAccess().getLinkPerfSpecParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getPerformanceSpecificationAccess().getNetworkInterfacePerfSpecParserRuleCall_3()); }
+	ruleNetworkInterfacePerfSpec
+{ after(grammarAccess.getPerformanceSpecificationAccess().getNetworkInterfacePerfSpecParserRuleCall_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInterfacePerfSpec__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInterfacePerfSpecAccess().getPhysicalNetworkInterfacePerfSpecParserRuleCall_0()); }
+	rulePhysicalNetworkInterfacePerfSpec
+{ after(grammarAccess.getNetworkInterfacePerfSpecAccess().getPhysicalNetworkInterfacePerfSpecParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNetworkInterfacePerfSpecAccess().getVirtualNetworkInterfacePerfSpecParserRuleCall_1()); }
+	ruleVirtualNetworkInterfacePerfSpec
+{ after(grammarAccess.getNetworkInterfacePerfSpecAccess().getVirtualNetworkInterfacePerfSpecParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LinkPerfSpec__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLinkPerfSpecAccess().getPhysicalLinkPerfSpecParserRuleCall_0()); }
+	rulePhysicalLinkPerfSpec
+{ after(grammarAccess.getLinkPerfSpecAccess().getPhysicalLinkPerfSpecParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLinkPerfSpecAccess().getVirtualLinkPerfSpecParserRuleCall_1()); }
+	ruleVirtualLinkPerfSpec
+{ after(grammarAccess.getLinkPerfSpecAccess().getVirtualLinkPerfSpecParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInterface__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInterfaceAccess().getPhysicalNetworkInterfaceParserRuleCall_0()); }
+	rulePhysicalNetworkInterface
+{ after(grammarAccess.getNetworkInterfaceAccess().getPhysicalNetworkInterfaceParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNetworkInterfaceAccess().getVirtualNetworkInterfaceParserRuleCall_1()); }
+	ruleVirtualNetworkInterface
+{ after(grammarAccess.getNetworkInterfaceAccess().getVirtualNetworkInterfaceParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EString__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); }
+	RULE_STRING
+{ after(grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); }
+	RULE_ID
+{ after(grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EBoolean__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEBooleanAccess().getTrueKeyword_0()); }
+
+	'true' 
+
+{ after(grammarAccess.getEBooleanAccess().getTrueKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEBooleanAccess().getFalseKeyword_1()); }
+
+	'false' 
+
+{ after(grammarAccess.getEBooleanAccess().getFalseKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EFloat__Alternatives_4_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEFloatAccess().getEKeyword_4_0_0()); }
+
+	'E' 
+
+{ after(grammarAccess.getEFloatAccess().getEKeyword_4_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEFloatAccess().getEKeyword_4_0_1()); }
+
+	'e' 
+
+{ after(grammarAccess.getEFloatAccess().getEKeyword_4_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EDouble__Alternatives_4_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEDoubleAccess().getEKeyword_4_0_0()); }
+
+	'E' 
+
+{ after(grammarAccess.getEDoubleAccess().getEKeyword_4_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEDoubleAccess().getEKeyword_4_0_1()); }
+
+	'e' 
+
+{ after(grammarAccess.getEDoubleAccess().getEKeyword_4_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UnitPrefix__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUnitPrefixAccess().getNoneEnumLiteralDeclaration_0()); }
+(	'none' 
+)
+{ after(grammarAccess.getUnitPrefixAccess().getNoneEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getUnitPrefixAccess().getKEnumLiteralDeclaration_1()); }
+(	'K' 
+)
+{ after(grammarAccess.getUnitPrefixAccess().getKEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getUnitPrefixAccess().getMEnumLiteralDeclaration_2()); }
+(	'M' 
+)
+{ after(grammarAccess.getUnitPrefixAccess().getMEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getUnitPrefixAccess().getGEnumLiteralDeclaration_3()); }
+(	'G' 
+)
+{ after(grammarAccess.getUnitPrefixAccess().getGEnumLiteralDeclaration_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Speed__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedAccess().getBytesPerSecEnumLiteralDeclaration_0()); }
+(	'BytesPerSec' 
+)
+{ after(grammarAccess.getSpeedAccess().getBytesPerSecEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getSpeedAccess().getBitsPerSecEnumLiteralDeclaration_1()); }
+(	'bitsPerSec' 
+)
+{ after(grammarAccess.getSpeedAccess().getBitsPerSecEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getSpeedAccess().getPacketsPerSecEnumLiteralDeclaration_2()); }
+(	'packetsPerSec' 
+)
+{ after(grammarAccess.getSpeedAccess().getPacketsPerSecEnumLiteralDeclaration_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__NetworkInfrastructure__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__0__Impl
+	rule__NetworkInfrastructure__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getNetworkInfrastructureKeyword_0()); }
+
+	'NetworkInfrastructure' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getNetworkInfrastructureKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__1__Impl
+	rule__NetworkInfrastructure__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__2__Impl
+	rule__NetworkInfrastructure__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getDataCenterNameKeyword_2()); }
+
+	'dataCenterName' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getDataCenterNameKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__3__Impl
+	rule__NetworkInfrastructure__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getDataCenterNameAssignment_3()); }
+(rule__NetworkInfrastructure__DataCenterNameAssignment_3)
+{ after(grammarAccess.getNetworkInfrastructureAccess().getDataCenterNameAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__4__Impl
+	rule__NetworkInfrastructure__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getDataCenterAltNameKeyword_4()); }
+
+	'dataCenterAltName' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getDataCenterAltNameKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__5__Impl
+	rule__NetworkInfrastructure__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getDataCenterAltNameAssignment_5()); }
+(rule__NetworkInfrastructure__DataCenterAltNameAssignment_5)
+{ after(grammarAccess.getNetworkInfrastructureAccess().getDataCenterAltNameAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__6__Impl
+	rule__NetworkInfrastructure__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getTrafficKeyword_6()); }
+
+	'traffic' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getTrafficKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__7__Impl
+	rule__NetworkInfrastructure__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getTrafficAssignment_7()); }
+(rule__NetworkInfrastructure__TrafficAssignment_7)
+{ after(grammarAccess.getNetworkInfrastructureAccess().getTrafficAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__8__Impl
+	rule__NetworkInfrastructure__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getStructureKeyword_8()); }
+
+	'structure' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getStructureKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__9__Impl
+	rule__NetworkInfrastructure__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getStructureAssignment_9()); }
+(rule__NetworkInfrastructure__StructureAssignment_9)
+{ after(grammarAccess.getNetworkInfrastructureAccess().getStructureAssignment_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__10__Impl
+	rule__NetworkInfrastructure__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getConfigurationKeyword_10()); }
+
+	'configuration' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getConfigurationKeyword_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__11__Impl
+	rule__NetworkInfrastructure__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getConfigurationAssignment_11()); }
+(rule__NetworkInfrastructure__ConfigurationAssignment_11)
+{ after(grammarAccess.getNetworkInfrastructureAccess().getConfigurationAssignment_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__12__Impl
+	rule__NetworkInfrastructure__Group__13
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getGroup_12()); }
+(rule__NetworkInfrastructure__Group_12__0)?
+{ after(grammarAccess.getNetworkInfrastructureAccess().getGroup_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group__13
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group__13__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group__13__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getRightCurlyBracketKeyword_13()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getRightCurlyBracketKeyword_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkInfrastructure__Group_12__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group_12__0__Impl
+	rule__NetworkInfrastructure__Group_12__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group_12__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getParamsKeyword_12_0()); }
+
+	'params' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getParamsKeyword_12_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group_12__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group_12__1__Impl
+	rule__NetworkInfrastructure__Group_12__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group_12__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getLeftCurlyBracketKeyword_12_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getLeftCurlyBracketKeyword_12_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group_12__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group_12__2__Impl
+	rule__NetworkInfrastructure__Group_12__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group_12__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getParamsAssignment_12_2()); }
+(rule__NetworkInfrastructure__ParamsAssignment_12_2)
+{ after(grammarAccess.getNetworkInfrastructureAccess().getParamsAssignment_12_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group_12__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group_12__3__Impl
+	rule__NetworkInfrastructure__Group_12__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group_12__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getGroup_12_3()); }
+(rule__NetworkInfrastructure__Group_12_3__0)*
+{ after(grammarAccess.getNetworkInfrastructureAccess().getGroup_12_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group_12__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group_12__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group_12__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getRightCurlyBracketKeyword_12_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getRightCurlyBracketKeyword_12_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkInfrastructure__Group_12_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group_12_3__0__Impl
+	rule__NetworkInfrastructure__Group_12_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group_12_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getCommaKeyword_12_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getNetworkInfrastructureAccess().getCommaKeyword_12_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkInfrastructure__Group_12_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkInfrastructure__Group_12_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__Group_12_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getParamsAssignment_12_3_1()); }
+(rule__NetworkInfrastructure__ParamsAssignment_12_3_1)
+{ after(grammarAccess.getNetworkInfrastructureAccess().getParamsAssignment_12_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__0__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getVirtualNetworkInterfacePerfSpecAction_0()); }
+(
+
+)
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getVirtualNetworkInterfacePerfSpecAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__1__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getVirtualNetworkInterfacePerfSpecKeyword_1()); }
+
+	'VirtualNetworkInterfacePerfSpec' 
+
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getVirtualNetworkInterfacePerfSpecKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__2__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__3__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getIsUpKeyword_3()); }
+
+	'isUp' 
+
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getIsUpKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__4__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getIsUpAssignment_4()); }
+(rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_4)
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getIsUpAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__5__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getPacketProcessingTimeKeyword_5()); }
+
+	'packetProcessingTime' 
+
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getPacketProcessingTimeKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__6__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getPacketProcessingTimeAssignment_6()); }
+(rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6)
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getPacketProcessingTimeAssignment_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__7__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getMTUKeyword_7()); }
+
+	'MTU' 
+
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getMTUKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__8__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getMTUAssignment_8()); }
+(rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_8)
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getMTUAssignment_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__9__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getInterfaceSpeedKeyword_9()); }
+
+	'interfaceSpeed' 
+
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getInterfaceSpeedKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__10__Impl
+	rule__VirtualNetworkInterfacePerfSpec__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getInterfaceSpeedAssignment_10()); }
+(rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10)
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getInterfaceSpeedAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterfacePerfSpec__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterfacePerfSpec__Group__11__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getRightCurlyBracketKeyword_11()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getRightCurlyBracketKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__0__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPhysicalNetworkInterfacePerfSpecAction_0()); }
+(
+
+)
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPhysicalNetworkInterfacePerfSpecAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__1__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPhysicalNetworkInterfacePerfSpecKeyword_1()); }
+
+	'PhysicalNetworkInterfacePerfSpec' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPhysicalNetworkInterfacePerfSpecKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__2__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__3__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getIsUpKeyword_3()); }
+
+	'isUp' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getIsUpKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__4__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getIsUpAssignment_4()); }
+(rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_4)
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getIsUpAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__5__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPacketProcessingTimeKeyword_5()); }
+
+	'packetProcessingTime' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPacketProcessingTimeKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__6__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPacketProcessingTimeAssignment_6()); }
+(rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6)
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPacketProcessingTimeAssignment_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__7__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getMTUKeyword_7()); }
+
+	'MTU' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getMTUKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__8__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getMTUAssignment_8()); }
+(rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_8)
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getMTUAssignment_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__9__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getInterfaceSpeedKeyword_9()); }
+
+	'interfaceSpeed' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getInterfaceSpeedKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__10__Impl
+	rule__PhysicalNetworkInterfacePerfSpec__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getInterfaceSpeedAssignment_10()); }
+(rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10)
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getInterfaceSpeedAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterfacePerfSpec__Group__11__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getRightCurlyBracketKeyword_11()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getRightCurlyBracketKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualLinkPerfSpec__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLinkPerfSpec__Group__0__Impl
+	rule__VirtualLinkPerfSpec__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getVirtualLinkPerfSpecAction_0()); }
+(
+
+)
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getVirtualLinkPerfSpecAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLinkPerfSpec__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLinkPerfSpec__Group__1__Impl
+	rule__VirtualLinkPerfSpec__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getVirtualLinkPerfSpecKeyword_1()); }
+
+	'VirtualLinkPerfSpec' 
+
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getVirtualLinkPerfSpecKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLinkPerfSpec__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLinkPerfSpec__Group__2__Impl
+	rule__VirtualLinkPerfSpec__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLinkPerfSpec__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLinkPerfSpec__Group__3__Impl
+	rule__VirtualLinkPerfSpec__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getPropagationDelayKeyword_3()); }
+
+	'propagationDelay' 
+
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getPropagationDelayKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLinkPerfSpec__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLinkPerfSpec__Group__4__Impl
+	rule__VirtualLinkPerfSpec__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getPropagationDelayAssignment_4()); }
+(rule__VirtualLinkPerfSpec__PropagationDelayAssignment_4)
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getPropagationDelayAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLinkPerfSpec__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLinkPerfSpec__Group__5__Impl
+	rule__VirtualLinkPerfSpec__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getGroup_5()); }
+(rule__VirtualLinkPerfSpec__Group_5__0)?
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLinkPerfSpec__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLinkPerfSpec__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualLinkPerfSpec__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLinkPerfSpec__Group_5__0__Impl
+	rule__VirtualLinkPerfSpec__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getMaxSupportedBandwidthKeyword_5_0()); }
+
+	'maxSupportedBandwidth' 
+
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getMaxSupportedBandwidthKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLinkPerfSpec__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLinkPerfSpec__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getMaxSupportedBandwidthAssignment_5_1()); }
+(rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1)
+{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getMaxSupportedBandwidthAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PhysicalLinkPerfSpec__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLinkPerfSpec__Group__0__Impl
+	rule__PhysicalLinkPerfSpec__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getPhysicalLinkPerfSpecAction_0()); }
+(
+
+)
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getPhysicalLinkPerfSpecAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLinkPerfSpec__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLinkPerfSpec__Group__1__Impl
+	rule__PhysicalLinkPerfSpec__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getPhysicalLinkPerfSpecKeyword_1()); }
+
+	'PhysicalLinkPerfSpec' 
+
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getPhysicalLinkPerfSpecKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLinkPerfSpec__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLinkPerfSpec__Group__2__Impl
+	rule__PhysicalLinkPerfSpec__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLinkPerfSpec__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLinkPerfSpec__Group__3__Impl
+	rule__PhysicalLinkPerfSpec__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getPropagationDelayKeyword_3()); }
+
+	'propagationDelay' 
+
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getPropagationDelayKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLinkPerfSpec__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLinkPerfSpec__Group__4__Impl
+	rule__PhysicalLinkPerfSpec__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getPropagationDelayAssignment_4()); }
+(rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_4)
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getPropagationDelayAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLinkPerfSpec__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLinkPerfSpec__Group__5__Impl
+	rule__PhysicalLinkPerfSpec__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getGroup_5()); }
+(rule__PhysicalLinkPerfSpec__Group_5__0)?
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLinkPerfSpec__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLinkPerfSpec__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalLinkPerfSpec__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLinkPerfSpec__Group_5__0__Impl
+	rule__PhysicalLinkPerfSpec__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getMaxSupportedBandwidthKeyword_5_0()); }
+
+	'maxSupportedBandwidth' 
+
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getMaxSupportedBandwidthKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLinkPerfSpec__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLinkPerfSpec__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getMaxSupportedBandwidthAssignment_5_1()); }
+(rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1)
+{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getMaxSupportedBandwidthAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__IntermediateNodePerfSpec__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IntermediateNodePerfSpec__Group__0__Impl
+	rule__IntermediateNodePerfSpec__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntermediateNodePerfSpec__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getIntermediateNodePerfSpecKeyword_0()); }
+
+	'IntermediateNodePerfSpec' 
+
+{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getIntermediateNodePerfSpecKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IntermediateNodePerfSpec__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IntermediateNodePerfSpec__Group__1__Impl
+	rule__IntermediateNodePerfSpec__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntermediateNodePerfSpec__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IntermediateNodePerfSpec__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IntermediateNodePerfSpec__Group__2__Impl
+	rule__IntermediateNodePerfSpec__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntermediateNodePerfSpec__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getDataplaneKeyword_2()); }
+
+	'dataplane' 
+
+{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getDataplaneKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IntermediateNodePerfSpec__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IntermediateNodePerfSpec__Group__3__Impl
+	rule__IntermediateNodePerfSpec__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntermediateNodePerfSpec__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getDataplaneAssignment_3()); }
+(rule__IntermediateNodePerfSpec__DataplaneAssignment_3)
+{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getDataplaneAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IntermediateNodePerfSpec__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IntermediateNodePerfSpec__Group__4__Impl
+	rule__IntermediateNodePerfSpec__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntermediateNodePerfSpec__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getControlplaneKeyword_4()); }
+
+	'controlplane' 
+
+{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getControlplaneKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IntermediateNodePerfSpec__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IntermediateNodePerfSpec__Group__5__Impl
+	rule__IntermediateNodePerfSpec__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntermediateNodePerfSpec__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getControlplaneAssignment_5()); }
+(rule__IntermediateNodePerfSpec__ControlplaneAssignment_5)
+{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getControlplaneAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__IntermediateNodePerfSpec__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__IntermediateNodePerfSpec__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntermediateNodePerfSpec__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ControlPlanePerfSpec__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ControlPlanePerfSpec__Group__0__Impl
+	rule__ControlPlanePerfSpec__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getDataPlanePerfSpecKeyword_0()); }
+
+	'DataPlanePerfSpec' 
+
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getDataPlanePerfSpecKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ControlPlanePerfSpec__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ControlPlanePerfSpec__Group__1__Impl
+	rule__ControlPlanePerfSpec__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ControlPlanePerfSpec__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ControlPlanePerfSpec__Group__2__Impl
+	rule__ControlPlanePerfSpec__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getProcessingLatencyKeyword_2()); }
+
+	'processingLatency' 
+
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getProcessingLatencyKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ControlPlanePerfSpec__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ControlPlanePerfSpec__Group__3__Impl
+	rule__ControlPlanePerfSpec__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getProcessingLatencyAssignment_3()); }
+(rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_3)
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getProcessingLatencyAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ControlPlanePerfSpec__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ControlPlanePerfSpec__Group__4__Impl
+	rule__ControlPlanePerfSpec__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getProcessingBandwidthReqPSKeyword_4()); }
+
+	'processingBandwidthReqPS' 
+
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getProcessingBandwidthReqPSKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ControlPlanePerfSpec__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ControlPlanePerfSpec__Group__5__Impl
+	rule__ControlPlanePerfSpec__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getProcessingBandwidthReqPSAssignment_5()); }
+(rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_5)
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getProcessingBandwidthReqPSAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ControlPlanePerfSpec__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ControlPlanePerfSpec__Group__6__Impl
+	rule__ControlPlanePerfSpec__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getPacketProcessingTimeKeyword_6()); }
+
+	'packetProcessingTime' 
+
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getPacketProcessingTimeKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ControlPlanePerfSpec__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ControlPlanePerfSpec__Group__7__Impl
+	rule__ControlPlanePerfSpec__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getPacketProcessingTimeAssignment_7()); }
+(rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_7)
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getPacketProcessingTimeAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ControlPlanePerfSpec__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ControlPlanePerfSpec__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getRightCurlyBracketKeyword_8()); }
+
+	'}' 
+
+{ after(grammarAccess.getControlPlanePerfSpecAccess().getRightCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataPlanePerfSpec__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__0__Impl
+	rule__DataPlanePerfSpec__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getDataPlanePerfSpecKeyword_0()); }
+
+	'DataPlanePerfSpec' 
+
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getDataPlanePerfSpecKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__1__Impl
+	rule__DataPlanePerfSpec__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__2__Impl
+	rule__DataPlanePerfSpec__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingLatencyKeyword_2()); }
+
+	'forwardingLatency' 
+
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingLatencyKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__3__Impl
+	rule__DataPlanePerfSpec__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingLatencyAssignment_3()); }
+(rule__DataPlanePerfSpec__ForwardingLatencyAssignment_3)
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingLatencyAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__4__Impl
+	rule__DataPlanePerfSpec__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthPPSKeyword_4()); }
+
+	'forwardingBandwidthPPS' 
+
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthPPSKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__5__Impl
+	rule__DataPlanePerfSpec__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthPPSAssignment_5()); }
+(rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_5)
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthPPSAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__6__Impl
+	rule__DataPlanePerfSpec__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthBPSKeyword_6()); }
+
+	'forwardingBandwidthBPS' 
+
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthBPSKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__7__Impl
+	rule__DataPlanePerfSpec__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthBPSAssignment_7()); }
+(rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_7)
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthBPSAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__8__Impl
+	rule__DataPlanePerfSpec__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getPacketProcessingTimeKeyword_8()); }
+
+	'packetProcessingTime' 
+
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getPacketProcessingTimeKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__9__Impl
+	rule__DataPlanePerfSpec__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getPacketProcessingTimeAssignment_9()); }
+(rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_9)
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getPacketProcessingTimeAssignment_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataPlanePerfSpec__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataPlanePerfSpec__Group__10__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getRightCurlyBracketKeyword_10()); }
+
+	'}' 
+
+{ after(grammarAccess.getDataPlanePerfSpecAccess().getRightCurlyBracketKeyword_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__EndNodePerfSpec__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group__0__Impl
+	rule__EndNodePerfSpec__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getEndNodePerfSpecKeyword_0()); }
+
+	'EndNodePerfSpec' 
+
+{ after(grammarAccess.getEndNodePerfSpecAccess().getEndNodePerfSpecKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EndNodePerfSpec__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group__1__Impl
+	rule__EndNodePerfSpec__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getEndNodePerfSpecAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EndNodePerfSpec__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group__2__Impl
+	rule__EndNodePerfSpec__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getSoftwareLayersDelayKeyword_2()); }
+
+	'softwareLayersDelay' 
+
+{ after(grammarAccess.getEndNodePerfSpecAccess().getSoftwareLayersDelayKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EndNodePerfSpec__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group__3__Impl
+	rule__EndNodePerfSpec__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getSoftwareLayersDelayAssignment_3()); }
+(rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_3)
+{ after(grammarAccess.getEndNodePerfSpecAccess().getSoftwareLayersDelayAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EndNodePerfSpec__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group__4__Impl
+	rule__EndNodePerfSpec__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getGroup_4()); }
+(rule__EndNodePerfSpec__Group_4__0)?
+{ after(grammarAccess.getEndNodePerfSpecAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EndNodePerfSpec__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group__5__Impl
+	rule__EndNodePerfSpec__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getGroup_5()); }
+(rule__EndNodePerfSpec__Group_5__0)?
+{ after(grammarAccess.getEndNodePerfSpecAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EndNodePerfSpec__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getEndNodePerfSpecAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__EndNodePerfSpec__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group_4__0__Impl
+	rule__EndNodePerfSpec__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getDataplaneKeyword_4_0()); }
+
+	'dataplane' 
+
+{ after(grammarAccess.getEndNodePerfSpecAccess().getDataplaneKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EndNodePerfSpec__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getDataplaneAssignment_4_1()); }
+(rule__EndNodePerfSpec__DataplaneAssignment_4_1)
+{ after(grammarAccess.getEndNodePerfSpecAccess().getDataplaneAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EndNodePerfSpec__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group_5__0__Impl
+	rule__EndNodePerfSpec__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getControlplaneKeyword_5_0()); }
+
+	'controlplane' 
+
+{ after(grammarAccess.getEndNodePerfSpecAccess().getControlplaneKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EndNodePerfSpec__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EndNodePerfSpec__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getControlplaneAssignment_5_1()); }
+(rule__EndNodePerfSpec__ControlplaneAssignment_5_1)
+{ after(grammarAccess.getEndNodePerfSpecAccess().getControlplaneAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NetworkTraffic__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group__0__Impl
+	rule__NetworkTraffic__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getNetworkTrafficAction_0()); }
+(
+
+)
+{ after(grammarAccess.getNetworkTrafficAccess().getNetworkTrafficAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group__1__Impl
+	rule__NetworkTraffic__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getNetworkTrafficKeyword_1()); }
+
+	'NetworkTraffic' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getNetworkTrafficKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group__2__Impl
+	rule__NetworkTraffic__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group__3__Impl
+	rule__NetworkTraffic__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getGroup_3()); }
+(rule__NetworkTraffic__Group_3__0)?
+{ after(grammarAccess.getNetworkTrafficAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group__4__Impl
+	rule__NetworkTraffic__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getGroup_4()); }
+(rule__NetworkTraffic__Group_4__0)?
+{ after(grammarAccess.getNetworkTrafficAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkTraffic__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_3__0__Impl
+	rule__NetworkTraffic__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getFlowsKeyword_3_0()); }
+
+	'flows' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getFlowsKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_3__1__Impl
+	rule__NetworkTraffic__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getLeftCurlyBracketKeyword_3_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getLeftCurlyBracketKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_3__2__Impl
+	rule__NetworkTraffic__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getFlowsAssignment_3_2()); }
+(rule__NetworkTraffic__FlowsAssignment_3_2)
+{ after(grammarAccess.getNetworkTrafficAccess().getFlowsAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_3__3__Impl
+	rule__NetworkTraffic__Group_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getGroup_3_3()); }
+(rule__NetworkTraffic__Group_3_3__0)*
+{ after(grammarAccess.getNetworkTrafficAccess().getGroup_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getRightCurlyBracketKeyword_3_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getRightCurlyBracketKeyword_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkTraffic__Group_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_3_3__0__Impl
+	rule__NetworkTraffic__Group_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getCommaKeyword_3_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getCommaKeyword_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getFlowsAssignment_3_3_1()); }
+(rule__NetworkTraffic__FlowsAssignment_3_3_1)
+{ after(grammarAccess.getNetworkTrafficAccess().getFlowsAssignment_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NetworkTraffic__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_4__0__Impl
+	rule__NetworkTraffic__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getSoftwareKeyword_4_0()); }
+
+	'software' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getSoftwareKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_4__1__Impl
+	rule__NetworkTraffic__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getLeftCurlyBracketKeyword_4_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getLeftCurlyBracketKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_4__2__Impl
+	rule__NetworkTraffic__Group_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getSoftwareAssignment_4_2()); }
+(rule__NetworkTraffic__SoftwareAssignment_4_2)
+{ after(grammarAccess.getNetworkTrafficAccess().getSoftwareAssignment_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_4__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_4__3__Impl
+	rule__NetworkTraffic__Group_4__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_4__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getGroup_4_3()); }
+(rule__NetworkTraffic__Group_4_3__0)*
+{ after(grammarAccess.getNetworkTrafficAccess().getGroup_4_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_4__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_4__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_4__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getRightCurlyBracketKeyword_4_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getRightCurlyBracketKeyword_4_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkTraffic__Group_4_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_4_3__0__Impl
+	rule__NetworkTraffic__Group_4_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_4_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getCommaKeyword_4_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getNetworkTrafficAccess().getCommaKeyword_4_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkTraffic__Group_4_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkTraffic__Group_4_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__Group_4_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getSoftwareAssignment_4_3_1()); }
+(rule__NetworkTraffic__SoftwareAssignment_4_3_1)
+{ after(grammarAccess.getNetworkTrafficAccess().getSoftwareAssignment_4_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NetworkStructure__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group__0__Impl
+	rule__NetworkStructure__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getNetworkStructureAction_0()); }
+(
+
+)
+{ after(grammarAccess.getNetworkStructureAccess().getNetworkStructureAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group__1__Impl
+	rule__NetworkStructure__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getNetworkStructureKeyword_1()); }
+
+	'NetworkStructure' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getNetworkStructureKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group__2__Impl
+	rule__NetworkStructure__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group__3__Impl
+	rule__NetworkStructure__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getGroup_3()); }
+(rule__NetworkStructure__Group_3__0)?
+{ after(grammarAccess.getNetworkStructureAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group__4__Impl
+	rule__NetworkStructure__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getGroup_4()); }
+(rule__NetworkStructure__Group_4__0)?
+{ after(grammarAccess.getNetworkStructureAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkStructure__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_3__0__Impl
+	rule__NetworkStructure__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getNodesKeyword_3_0()); }
+
+	'nodes' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getNodesKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_3__1__Impl
+	rule__NetworkStructure__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getLeftCurlyBracketKeyword_3_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getLeftCurlyBracketKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_3__2__Impl
+	rule__NetworkStructure__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getNodesAssignment_3_2()); }
+(rule__NetworkStructure__NodesAssignment_3_2)
+{ after(grammarAccess.getNetworkStructureAccess().getNodesAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_3__3__Impl
+	rule__NetworkStructure__Group_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getGroup_3_3()); }
+(rule__NetworkStructure__Group_3_3__0)*
+{ after(grammarAccess.getNetworkStructureAccess().getGroup_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getRightCurlyBracketKeyword_3_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getRightCurlyBracketKeyword_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkStructure__Group_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_3_3__0__Impl
+	rule__NetworkStructure__Group_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getCommaKeyword_3_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getCommaKeyword_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getNodesAssignment_3_3_1()); }
+(rule__NetworkStructure__NodesAssignment_3_3_1)
+{ after(grammarAccess.getNetworkStructureAccess().getNodesAssignment_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NetworkStructure__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_4__0__Impl
+	rule__NetworkStructure__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getLinksKeyword_4_0()); }
+
+	'links' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getLinksKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_4__1__Impl
+	rule__NetworkStructure__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getLeftCurlyBracketKeyword_4_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getLeftCurlyBracketKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_4__2__Impl
+	rule__NetworkStructure__Group_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getLinksAssignment_4_2()); }
+(rule__NetworkStructure__LinksAssignment_4_2)
+{ after(grammarAccess.getNetworkStructureAccess().getLinksAssignment_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_4__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_4__3__Impl
+	rule__NetworkStructure__Group_4__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_4__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getGroup_4_3()); }
+(rule__NetworkStructure__Group_4_3__0)*
+{ after(grammarAccess.getNetworkStructureAccess().getGroup_4_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_4__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_4__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_4__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getRightCurlyBracketKeyword_4_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getRightCurlyBracketKeyword_4_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkStructure__Group_4_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_4_3__0__Impl
+	rule__NetworkStructure__Group_4_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_4_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getCommaKeyword_4_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getNetworkStructureAccess().getCommaKeyword_4_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkStructure__Group_4_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkStructure__Group_4_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__Group_4_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getLinksAssignment_4_3_1()); }
+(rule__NetworkStructure__LinksAssignment_4_3_1)
+{ after(grammarAccess.getNetworkStructureAccess().getLinksAssignment_4_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NetworkConfiguration__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkConfiguration__Group__0__Impl
+	rule__NetworkConfiguration__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkConfiguration__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getNetworkConfigurationKeyword_0()); }
+
+	'NetworkConfiguration' 
+
+{ after(grammarAccess.getNetworkConfigurationAccess().getNetworkConfigurationKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkConfiguration__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkConfiguration__Group__1__Impl
+	rule__NetworkConfiguration__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkConfiguration__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkConfigurationAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkConfiguration__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkConfiguration__Group__2__Impl
+	rule__NetworkConfiguration__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkConfiguration__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getProtocolsAndStacksKeyword_2()); }
+
+	'protocolsAndStacks' 
+
+{ after(grammarAccess.getNetworkConfigurationAccess().getProtocolsAndStacksKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkConfiguration__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkConfiguration__Group__3__Impl
+	rule__NetworkConfiguration__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkConfiguration__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getProtocolsAndStacksAssignment_3()); }
+(rule__NetworkConfiguration__ProtocolsAndStacksAssignment_3)
+{ after(grammarAccess.getNetworkConfigurationAccess().getProtocolsAndStacksAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkConfiguration__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkConfiguration__Group__4__Impl
+	rule__NetworkConfiguration__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkConfiguration__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getRoutesKeyword_4()); }
+
+	'routes' 
+
+{ after(grammarAccess.getNetworkConfigurationAccess().getRoutesKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkConfiguration__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkConfiguration__Group__5__Impl
+	rule__NetworkConfiguration__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkConfiguration__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getRoutesAssignment_5()); }
+(rule__NetworkConfiguration__RoutesAssignment_5)
+{ after(grammarAccess.getNetworkConfigurationAccess().getRoutesAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkConfiguration__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkConfiguration__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkConfiguration__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkConfigurationAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ExperimentParam__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExperimentParam__Group__0__Impl
+	rule__ExperimentParam__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExperimentParam__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExperimentParamAccess().getExperimentParamKeyword_0()); }
+
+	'ExperimentParam' 
+
+{ after(grammarAccess.getExperimentParamAccess().getExperimentParamKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExperimentParam__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExperimentParam__Group__1__Impl
+	rule__ExperimentParam__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExperimentParam__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExperimentParamAccess().getNameAssignment_1()); }
+(rule__ExperimentParam__NameAssignment_1)
+{ after(grammarAccess.getExperimentParamAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExperimentParam__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExperimentParam__Group__2__Impl
+	rule__ExperimentParam__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExperimentParam__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExperimentParamAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getExperimentParamAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExperimentParam__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExperimentParam__Group__3__Impl
+	rule__ExperimentParam__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExperimentParam__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExperimentParamAccess().getValueKeyword_3()); }
+
+	'value' 
+
+{ after(grammarAccess.getExperimentParamAccess().getValueKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExperimentParam__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExperimentParam__Group__4__Impl
+	rule__ExperimentParam__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExperimentParam__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExperimentParamAccess().getValueAssignment_4()); }
+(rule__ExperimentParam__ValueAssignment_4)
+{ after(grammarAccess.getExperimentParamAccess().getValueAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExperimentParam__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExperimentParam__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExperimentParam__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExperimentParamAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getExperimentParamAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__SoftwareComponent__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__0__Impl
+	rule__SoftwareComponent__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getSoftwareComponentKeyword_0()); }
+
+	'SoftwareComponent' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getSoftwareComponentKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__1__Impl
+	rule__SoftwareComponent__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getIdAssignment_1()); }
+(rule__SoftwareComponent__IdAssignment_1)
+{ after(grammarAccess.getSoftwareComponentAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__2__Impl
+	rule__SoftwareComponent__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__3__Impl
+	rule__SoftwareComponent__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__4__Impl
+	rule__SoftwareComponent__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getNameAssignment_4()); }
+(rule__SoftwareComponent__NameAssignment_4)
+{ after(grammarAccess.getSoftwareComponentAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__5__Impl
+	rule__SoftwareComponent__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getGroup_5()); }
+(rule__SoftwareComponent__Group_5__0)?
+{ after(grammarAccess.getSoftwareComponentAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__6__Impl
+	rule__SoftwareComponent__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getDeployedOnKeyword_6()); }
+
+	'deployedOn' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getDeployedOnKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__7__Impl
+	rule__SoftwareComponent__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getDeployedOnAssignment_7()); }
+(rule__SoftwareComponent__DeployedOnAssignment_7)
+{ after(grammarAccess.getSoftwareComponentAccess().getDeployedOnAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__8__Impl
+	rule__SoftwareComponent__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getGroup_8()); }
+(rule__SoftwareComponent__Group_8__0)?
+{ after(grammarAccess.getSoftwareComponentAccess().getGroup_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group__9__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getRightCurlyBracketKeyword_9()); }
+
+	'}' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getRightCurlyBracketKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__SoftwareComponent__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_5__0__Impl
+	rule__SoftwareComponent__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_5__1__Impl
+	rule__SoftwareComponent__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_5__2__Impl
+	rule__SoftwareComponent__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__SoftwareComponent__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_5__3__Impl
+	rule__SoftwareComponent__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getGroup_5_3()); }
+(rule__SoftwareComponent__Group_5_3__0)*
+{ after(grammarAccess.getSoftwareComponentAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__SoftwareComponent__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_5_3__0__Impl
+	rule__SoftwareComponent__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__SoftwareComponent__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__SoftwareComponent__Group_8__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_8__0__Impl
+	rule__SoftwareComponent__Group_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_8__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesKeyword_8_0()); }
+
+	'trafficSources' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesKeyword_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_8__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_8__1__Impl
+	rule__SoftwareComponent__Group_8__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_8__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getLeftCurlyBracketKeyword_8_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getLeftCurlyBracketKeyword_8_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_8__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_8__2__Impl
+	rule__SoftwareComponent__Group_8__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_8__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesAssignment_8_2()); }
+(rule__SoftwareComponent__TrafficSourcesAssignment_8_2)
+{ after(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesAssignment_8_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_8__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_8__3__Impl
+	rule__SoftwareComponent__Group_8__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_8__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getGroup_8_3()); }
+(rule__SoftwareComponent__Group_8_3__0)*
+{ after(grammarAccess.getSoftwareComponentAccess().getGroup_8_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_8__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_8__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_8__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getRightCurlyBracketKeyword_8_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getRightCurlyBracketKeyword_8_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__SoftwareComponent__Group_8_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_8_3__0__Impl
+	rule__SoftwareComponent__Group_8_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_8_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getCommaKeyword_8_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getSoftwareComponentAccess().getCommaKeyword_8_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SoftwareComponent__Group_8_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SoftwareComponent__Group_8_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__Group_8_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesAssignment_8_3_1()); }
+(rule__SoftwareComponent__TrafficSourcesAssignment_8_3_1)
+{ after(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesAssignment_8_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EntityAddress__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group__0__Impl
+	rule__EntityAddress__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getEntityAddressAction_0()); }
+(
+
+)
+{ after(grammarAccess.getEntityAddressAccess().getEntityAddressAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityAddress__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group__1__Impl
+	rule__EntityAddress__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getEntityAddressKeyword_1()); }
+
+	'EntityAddress' 
+
+{ after(grammarAccess.getEntityAddressAccess().getEntityAddressKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityAddress__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group__2__Impl
+	rule__EntityAddress__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getEntityAddressAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityAddress__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group__3__Impl
+	rule__EntityAddress__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getGroup_3()); }
+(rule__EntityAddress__Group_3__0)?
+{ after(grammarAccess.getEntityAddressAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityAddress__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group__4__Impl
+	rule__EntityAddress__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getGroup_4()); }
+(rule__EntityAddress__Group_4__0)?
+{ after(grammarAccess.getEntityAddressAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityAddress__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getEntityAddressAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__EntityAddress__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group_3__0__Impl
+	rule__EntityAddress__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getAddressKeyword_3_0()); }
+
+	'address' 
+
+{ after(grammarAccess.getEntityAddressAccess().getAddressKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityAddress__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getAddressAssignment_3_1()); }
+(rule__EntityAddress__AddressAssignment_3_1)
+{ after(grammarAccess.getEntityAddressAccess().getAddressAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EntityAddress__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group_4__0__Impl
+	rule__EntityAddress__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getAddressGivenByKeyword_4_0()); }
+
+	'addressGivenBy' 
+
+{ after(grammarAccess.getEntityAddressAccess().getAddressGivenByKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityAddress__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityAddress__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getAddressGivenByAssignment_4_1()); }
+(rule__EntityAddress__AddressGivenByAssignment_4_1)
+{ after(grammarAccess.getEntityAddressAccess().getAddressGivenByAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ONOFFFlow__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__0__Impl
+	rule__ONOFFFlow__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getStartStateAssignment_0()); }
+(rule__ONOFFFlow__StartStateAssignment_0)
+{ after(grammarAccess.getONOFFFlowAccess().getStartStateAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__1__Impl
+	rule__ONOFFFlow__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getONOFFFlowKeyword_1()); }
+
+	'ONOFFFlow' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getONOFFFlowKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__2__Impl
+	rule__ONOFFFlow__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getIdAssignment_2()); }
+(rule__ONOFFFlow__IdAssignment_2)
+{ after(grammarAccess.getONOFFFlowAccess().getIdAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__3__Impl
+	rule__ONOFFFlow__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getLeftCurlyBracketKeyword_3()); }
+
+	'{' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__4__Impl
+	rule__ONOFFFlow__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getNameKeyword_4()); }
+
+	'name' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getNameKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__5__Impl
+	rule__ONOFFFlow__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getNameAssignment_5()); }
+(rule__ONOFFFlow__NameAssignment_5)
+{ after(grammarAccess.getONOFFFlowAccess().getNameAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__6__Impl
+	rule__ONOFFFlow__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getGroup_6()); }
+(rule__ONOFFFlow__Group_6__0)?
+{ after(grammarAccess.getONOFFFlowAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__7__Impl
+	rule__ONOFFFlow__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getGroup_7()); }
+(rule__ONOFFFlow__Group_7__0)?
+{ after(grammarAccess.getONOFFFlowAccess().getGroup_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__8__Impl
+	rule__ONOFFFlow__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getGroup_8()); }
+(rule__ONOFFFlow__Group_8__0)?
+{ after(grammarAccess.getONOFFFlowAccess().getGroup_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__9__Impl
+	rule__ONOFFFlow__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getGroup_9()); }
+(rule__ONOFFFlow__Group_9__0)?
+{ after(grammarAccess.getONOFFFlowAccess().getGroup_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__10__Impl
+	rule__ONOFFFlow__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getONstateIATKeyword_10()); }
+
+	'ONstateIAT' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getONstateIATKeyword_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__11__Impl
+	rule__ONOFFFlow__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getONstateIATAssignment_11()); }
+(rule__ONOFFFlow__ONstateIATAssignment_11)
+{ after(grammarAccess.getONOFFFlowAccess().getONstateIATAssignment_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__12__Impl
+	rule__ONOFFFlow__Group__13
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getONstateDurationKeyword_12()); }
+
+	'ONstateDuration' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getONstateDurationKeyword_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__13
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__13__Impl
+	rule__ONOFFFlow__Group__14
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__13__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getONstateDurationAssignment_13()); }
+(rule__ONOFFFlow__ONstateDurationAssignment_13)
+{ after(grammarAccess.getONOFFFlowAccess().getONstateDurationAssignment_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__14
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__14__Impl
+	rule__ONOFFFlow__Group__15
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__14__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getOFFstateDurationKeyword_14()); }
+
+	'OFFstateDuration' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getOFFstateDurationKeyword_14()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__15
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__15__Impl
+	rule__ONOFFFlow__Group__16
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__15__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getOFFstateDurationAssignment_15()); }
+(rule__ONOFFFlow__OFFstateDurationAssignment_15)
+{ after(grammarAccess.getONOFFFlowAccess().getOFFstateDurationAssignment_15()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__16
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__16__Impl
+	rule__ONOFFFlow__Group__17
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__16__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getPacketLengthKeyword_16()); }
+
+	'packetLength' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getPacketLengthKeyword_16()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__17
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__17__Impl
+	rule__ONOFFFlow__Group__18
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__17__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getPacketLengthAssignment_17()); }
+(rule__ONOFFFlow__PacketLengthAssignment_17)
+{ after(grammarAccess.getONOFFFlowAccess().getPacketLengthAssignment_17()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group__18
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group__18__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group__18__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getRightCurlyBracketKeyword_18()); }
+
+	'}' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getRightCurlyBracketKeyword_18()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ONOFFFlow__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_6__0__Impl
+	rule__ONOFFFlow__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getAlternativeNamesKeyword_6_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getAlternativeNamesKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_6__1__Impl
+	rule__ONOFFFlow__Group_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getLeftCurlyBracketKeyword_6_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getLeftCurlyBracketKeyword_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_6__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_6__2__Impl
+	rule__ONOFFFlow__Group_6__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_6__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getAlternativeNamesAssignment_6_2()); }
+(rule__ONOFFFlow__AlternativeNamesAssignment_6_2)
+{ after(grammarAccess.getONOFFFlowAccess().getAlternativeNamesAssignment_6_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_6__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_6__3__Impl
+	rule__ONOFFFlow__Group_6__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_6__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getGroup_6_3()); }
+(rule__ONOFFFlow__Group_6_3__0)*
+{ after(grammarAccess.getONOFFFlowAccess().getGroup_6_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_6__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_6__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_6__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getRightCurlyBracketKeyword_6_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getRightCurlyBracketKeyword_6_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ONOFFFlow__Group_6_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_6_3__0__Impl
+	rule__ONOFFFlow__Group_6_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_6_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getCommaKeyword_6_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getCommaKeyword_6_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_6_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_6_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_6_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getAlternativeNamesAssignment_6_3_1()); }
+(rule__ONOFFFlow__AlternativeNamesAssignment_6_3_1)
+{ after(grammarAccess.getONOFFFlowAccess().getAlternativeNamesAssignment_6_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ONOFFFlow__Group_7__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_7__0__Impl
+	rule__ONOFFFlow__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_7__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentKeyword_7_0()); }
+
+	'destinationSoftwareComponent' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentKeyword_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_7__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_7__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_7__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentAssignment_7_1()); }
+(rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_1)
+{ after(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentAssignment_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ONOFFFlow__Group_8__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_8__0__Impl
+	rule__ONOFFFlow__Group_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_8__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentKeyword_8_0()); }
+
+	'sourceSoftwareComponent' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentKeyword_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_8__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_8__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_8__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentAssignment_8_1()); }
+(rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_1)
+{ after(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentAssignment_8_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ONOFFFlow__Group_9__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_9__0__Impl
+	rule__ONOFFFlow__Group_9__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_9__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getDestinationAddressesKeyword_9_0()); }
+
+	'destinationAddresses' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getDestinationAddressesKeyword_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_9__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_9__1__Impl
+	rule__ONOFFFlow__Group_9__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_9__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getLeftCurlyBracketKeyword_9_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getLeftCurlyBracketKeyword_9_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_9__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_9__2__Impl
+	rule__ONOFFFlow__Group_9__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_9__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getDestinationAddressesAssignment_9_2()); }
+(rule__ONOFFFlow__DestinationAddressesAssignment_9_2)
+{ after(grammarAccess.getONOFFFlowAccess().getDestinationAddressesAssignment_9_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_9__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_9__3__Impl
+	rule__ONOFFFlow__Group_9__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_9__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getGroup_9_3()); }
+(rule__ONOFFFlow__Group_9_3__0)*
+{ after(grammarAccess.getONOFFFlowAccess().getGroup_9_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_9__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_9__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_9__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getRightCurlyBracketKeyword_9_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getRightCurlyBracketKeyword_9_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ONOFFFlow__Group_9_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_9_3__0__Impl
+	rule__ONOFFFlow__Group_9_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_9_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getCommaKeyword_9_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getCommaKeyword_9_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ONOFFFlow__Group_9_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ONOFFFlow__Group_9_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__Group_9_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getDestinationAddressesAssignment_9_3_1()); }
+(rule__ONOFFFlow__DestinationAddressesAssignment_9_3_1)
+{ after(grammarAccess.getONOFFFlowAccess().getDestinationAddressesAssignment_9_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__GenericFlow__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__0__Impl
+	rule__GenericFlow__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getGenericFlowKeyword_0()); }
+
+	'GenericFlow' 
+
+{ after(grammarAccess.getGenericFlowAccess().getGenericFlowKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__1__Impl
+	rule__GenericFlow__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getIdAssignment_1()); }
+(rule__GenericFlow__IdAssignment_1)
+{ after(grammarAccess.getGenericFlowAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__2__Impl
+	rule__GenericFlow__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getGenericFlowAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__3__Impl
+	rule__GenericFlow__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getGenericFlowAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__4__Impl
+	rule__GenericFlow__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getNameAssignment_4()); }
+(rule__GenericFlow__NameAssignment_4)
+{ after(grammarAccess.getGenericFlowAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__5__Impl
+	rule__GenericFlow__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getGroup_5()); }
+(rule__GenericFlow__Group_5__0)?
+{ after(grammarAccess.getGenericFlowAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__6__Impl
+	rule__GenericFlow__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getGroup_6()); }
+(rule__GenericFlow__Group_6__0)?
+{ after(grammarAccess.getGenericFlowAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__7__Impl
+	rule__GenericFlow__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getGroup_7()); }
+(rule__GenericFlow__Group_7__0)?
+{ after(grammarAccess.getGenericFlowAccess().getGroup_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__8__Impl
+	rule__GenericFlow__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getGroup_8()); }
+(rule__GenericFlow__Group_8__0)?
+{ after(grammarAccess.getGenericFlowAccess().getGroup_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__9__Impl
+	rule__GenericFlow__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDataSizeKeyword_9()); }
+
+	'dataSize' 
+
+{ after(grammarAccess.getGenericFlowAccess().getDataSizeKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__10__Impl
+	rule__GenericFlow__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDataSizeAssignment_10()); }
+(rule__GenericFlow__DataSizeAssignment_10)
+{ after(grammarAccess.getGenericFlowAccess().getDataSizeAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group__11__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getRightCurlyBracketKeyword_11()); }
+
+	'}' 
+
+{ after(grammarAccess.getGenericFlowAccess().getRightCurlyBracketKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__GenericFlow__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_5__0__Impl
+	rule__GenericFlow__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getGenericFlowAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_5__1__Impl
+	rule__GenericFlow__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getGenericFlowAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_5__2__Impl
+	rule__GenericFlow__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__GenericFlow__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getGenericFlowAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_5__3__Impl
+	rule__GenericFlow__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getGroup_5_3()); }
+(rule__GenericFlow__Group_5_3__0)*
+{ after(grammarAccess.getGenericFlowAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getGenericFlowAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__GenericFlow__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_5_3__0__Impl
+	rule__GenericFlow__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getGenericFlowAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__GenericFlow__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getGenericFlowAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__GenericFlow__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_6__0__Impl
+	rule__GenericFlow__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentKeyword_6_0()); }
+
+	'destinationSoftwareComponent' 
+
+{ after(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_6__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentAssignment_6_1()); }
+(rule__GenericFlow__DestinationSoftwareComponentAssignment_6_1)
+{ after(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentAssignment_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__GenericFlow__Group_7__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_7__0__Impl
+	rule__GenericFlow__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_7__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentKeyword_7_0()); }
+
+	'sourceSoftwareComponent' 
+
+{ after(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentKeyword_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_7__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_7__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_7__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentAssignment_7_1()); }
+(rule__GenericFlow__SourceSoftwareComponentAssignment_7_1)
+{ after(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentAssignment_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__GenericFlow__Group_8__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_8__0__Impl
+	rule__GenericFlow__Group_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_8__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDestinationAddressesKeyword_8_0()); }
+
+	'destinationAddresses' 
+
+{ after(grammarAccess.getGenericFlowAccess().getDestinationAddressesKeyword_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_8__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_8__1__Impl
+	rule__GenericFlow__Group_8__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_8__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getLeftCurlyBracketKeyword_8_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getGenericFlowAccess().getLeftCurlyBracketKeyword_8_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_8__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_8__2__Impl
+	rule__GenericFlow__Group_8__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_8__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDestinationAddressesAssignment_8_2()); }
+(rule__GenericFlow__DestinationAddressesAssignment_8_2)
+{ after(grammarAccess.getGenericFlowAccess().getDestinationAddressesAssignment_8_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_8__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_8__3__Impl
+	rule__GenericFlow__Group_8__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_8__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getGroup_8_3()); }
+(rule__GenericFlow__Group_8_3__0)*
+{ after(grammarAccess.getGenericFlowAccess().getGroup_8_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_8__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_8__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_8__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getRightCurlyBracketKeyword_8_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getGenericFlowAccess().getRightCurlyBracketKeyword_8_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__GenericFlow__Group_8_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_8_3__0__Impl
+	rule__GenericFlow__Group_8_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_8_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getCommaKeyword_8_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getGenericFlowAccess().getCommaKeyword_8_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericFlow__Group_8_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericFlow__Group_8_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__Group_8_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDestinationAddressesAssignment_8_3_1()); }
+(rule__GenericFlow__DestinationAddressesAssignment_8_3_1)
+{ after(grammarAccess.getGenericFlowAccess().getDestinationAddressesAssignment_8_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NetworkProtocol__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__0__Impl
+	rule__NetworkProtocol__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getDeliveryGuaranteedAssignment_0()); }
+(rule__NetworkProtocol__DeliveryGuaranteedAssignment_0)?
+{ after(grammarAccess.getNetworkProtocolAccess().getDeliveryGuaranteedAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__1__Impl
+	rule__NetworkProtocol__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getNetworkProtocolKeyword_1()); }
+
+	'NetworkProtocol' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getNetworkProtocolKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__2__Impl
+	rule__NetworkProtocol__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getNameAssignment_2()); }
+(rule__NetworkProtocol__NameAssignment_2)
+{ after(grammarAccess.getNetworkProtocolAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__3__Impl
+	rule__NetworkProtocol__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getLeftCurlyBracketKeyword_3()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__4__Impl
+	rule__NetworkProtocol__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getGroup_4()); }
+(rule__NetworkProtocol__Group_4__0)?
+{ after(grammarAccess.getNetworkProtocolAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__5__Impl
+	rule__NetworkProtocol__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getMtuKeyword_5()); }
+
+	'mtu' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getMtuKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__6__Impl
+	rule__NetworkProtocol__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getMtuAssignment_6()); }
+(rule__NetworkProtocol__MtuAssignment_6)
+{ after(grammarAccess.getNetworkProtocolAccess().getMtuAssignment_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__7__Impl
+	rule__NetworkProtocol__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getHeadersLengthKeyword_7()); }
+
+	'headersLength' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getHeadersLengthKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__8__Impl
+	rule__NetworkProtocol__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getHeadersLengthAssignment_8()); }
+(rule__NetworkProtocol__HeadersLengthAssignment_8)
+{ after(grammarAccess.getNetworkProtocolAccess().getHeadersLengthAssignment_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__9__Impl
+	rule__NetworkProtocol__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getDataUnitLengthKeyword_9()); }
+
+	'dataUnitLength' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getDataUnitLengthKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__10__Impl
+	rule__NetworkProtocol__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getDataUnitLengthAssignment_10()); }
+(rule__NetworkProtocol__DataUnitLengthAssignment_10)
+{ after(grammarAccess.getNetworkProtocolAccess().getDataUnitLengthAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__11__Impl
+	rule__NetworkProtocol__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getGroup_11()); }
+(rule__NetworkProtocol__Group_11__0)?
+{ after(grammarAccess.getNetworkProtocolAccess().getGroup_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group__12__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getRightCurlyBracketKeyword_12()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getRightCurlyBracketKeyword_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkProtocol__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group_4__0__Impl
+	rule__NetworkProtocol__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesKeyword_4_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group_4__1__Impl
+	rule__NetworkProtocol__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getLeftCurlyBracketKeyword_4_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getLeftCurlyBracketKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group_4__2__Impl
+	rule__NetworkProtocol__Group_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesAssignment_4_2()); }
+(rule__NetworkProtocol__AlternativeNamesAssignment_4_2)
+{ after(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesAssignment_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group_4__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group_4__3__Impl
+	rule__NetworkProtocol__Group_4__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group_4__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getGroup_4_3()); }
+(rule__NetworkProtocol__Group_4_3__0)*
+{ after(grammarAccess.getNetworkProtocolAccess().getGroup_4_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group_4__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group_4__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group_4__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getRightCurlyBracketKeyword_4_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getRightCurlyBracketKeyword_4_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__NetworkProtocol__Group_4_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group_4_3__0__Impl
+	rule__NetworkProtocol__Group_4_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group_4_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getCommaKeyword_4_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getCommaKeyword_4_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group_4_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group_4_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group_4_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesAssignment_4_3_1()); }
+(rule__NetworkProtocol__AlternativeNamesAssignment_4_3_1)
+{ after(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesAssignment_4_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__NetworkProtocol__Group_11__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group_11__0__Impl
+	rule__NetworkProtocol__Group_11__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group_11__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getConnectionlessKeyword_11_0()); }
+
+	'connectionless' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getConnectionlessKeyword_11_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__NetworkProtocol__Group_11__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__NetworkProtocol__Group_11__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__Group_11__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getConnectionlessAssignment_11_1()); }
+(rule__NetworkProtocol__ConnectionlessAssignment_11_1)
+{ after(grammarAccess.getNetworkProtocolAccess().getConnectionlessAssignment_11_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EInt__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EInt__Group__0__Impl
+	rule__EInt__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EInt__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEIntAccess().getHyphenMinusKeyword_0()); }
+(
+	'-' 
+)?
+{ after(grammarAccess.getEIntAccess().getHyphenMinusKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EInt__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EInt__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EInt__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEIntAccess().getINTTerminalRuleCall_1()); }
+	RULE_INT
+{ after(grammarAccess.getEIntAccess().getINTTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ConstantDoubleVariable__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantDoubleVariable__Group__0__Impl
+	rule__ConstantDoubleVariable__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getConstantDoubleVariableKeyword_0()); }
+
+	'ConstantDoubleVariable' 
+
+{ after(grammarAccess.getConstantDoubleVariableAccess().getConstantDoubleVariableKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantDoubleVariable__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantDoubleVariable__Group__1__Impl
+	rule__ConstantDoubleVariable__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getConstantDoubleVariableAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantDoubleVariable__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantDoubleVariable__Group__2__Impl
+	rule__ConstantDoubleVariable__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getValueKeyword_2()); }
+
+	'value' 
+
+{ after(grammarAccess.getConstantDoubleVariableAccess().getValueKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantDoubleVariable__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantDoubleVariable__Group__3__Impl
+	rule__ConstantDoubleVariable__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getValueAssignment_3()); }
+(rule__ConstantDoubleVariable__ValueAssignment_3)
+{ after(grammarAccess.getConstantDoubleVariableAccess().getValueAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantDoubleVariable__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantDoubleVariable__Group__4__Impl
+	rule__ConstantDoubleVariable__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getGroup_4()); }
+(rule__ConstantDoubleVariable__Group_4__0)?
+{ after(grammarAccess.getConstantDoubleVariableAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantDoubleVariable__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantDoubleVariable__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getConstantDoubleVariableAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ConstantDoubleVariable__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantDoubleVariable__Group_4__0__Impl
+	rule__ConstantDoubleVariable__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getUnitKeyword_4_0()); }
+
+	'unit' 
+
+{ after(grammarAccess.getConstantDoubleVariableAccess().getUnitKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantDoubleVariable__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantDoubleVariable__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getUnitAssignment_4_1()); }
+(rule__ConstantDoubleVariable__UnitAssignment_4_1)
+{ after(grammarAccess.getConstantDoubleVariableAccess().getUnitAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ConstantLongVariable__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantLongVariable__Group__0__Impl
+	rule__ConstantLongVariable__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getConstantLongVariableKeyword_0()); }
+
+	'ConstantLongVariable' 
+
+{ after(grammarAccess.getConstantLongVariableAccess().getConstantLongVariableKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantLongVariable__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantLongVariable__Group__1__Impl
+	rule__ConstantLongVariable__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getConstantLongVariableAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantLongVariable__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantLongVariable__Group__2__Impl
+	rule__ConstantLongVariable__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getValueKeyword_2()); }
+
+	'value' 
+
+{ after(grammarAccess.getConstantLongVariableAccess().getValueKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantLongVariable__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantLongVariable__Group__3__Impl
+	rule__ConstantLongVariable__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getValueAssignment_3()); }
+(rule__ConstantLongVariable__ValueAssignment_3)
+{ after(grammarAccess.getConstantLongVariableAccess().getValueAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantLongVariable__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantLongVariable__Group__4__Impl
+	rule__ConstantLongVariable__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getGroup_4()); }
+(rule__ConstantLongVariable__Group_4__0)?
+{ after(grammarAccess.getConstantLongVariableAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantLongVariable__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantLongVariable__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getConstantLongVariableAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ConstantLongVariable__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantLongVariable__Group_4__0__Impl
+	rule__ConstantLongVariable__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getUnitKeyword_4_0()); }
+
+	'unit' 
+
+{ after(grammarAccess.getConstantLongVariableAccess().getUnitKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ConstantLongVariable__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ConstantLongVariable__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getUnitAssignment_4_1()); }
+(rule__ConstantLongVariable__UnitAssignment_4_1)
+{ after(grammarAccess.getConstantLongVariableAccess().getUnitAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RandomVariable__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RandomVariable__Group__0__Impl
+	rule__RandomVariable__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getRandomVariableKeyword_0()); }
+
+	'RandomVariable' 
+
+{ after(grammarAccess.getRandomVariableAccess().getRandomVariableKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RandomVariable__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RandomVariable__Group__1__Impl
+	rule__RandomVariable__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getRandomVariableAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RandomVariable__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RandomVariable__Group__2__Impl
+	rule__RandomVariable__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getGroup_2()); }
+(rule__RandomVariable__Group_2__0)?
+{ after(grammarAccess.getRandomVariableAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RandomVariable__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RandomVariable__Group__3__Impl
+	rule__RandomVariable__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getCdfKeyword_3()); }
+
+	'cdf' 
+
+{ after(grammarAccess.getRandomVariableAccess().getCdfKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RandomVariable__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RandomVariable__Group__4__Impl
+	rule__RandomVariable__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getCdfAssignment_4()); }
+(rule__RandomVariable__CdfAssignment_4)
+{ after(grammarAccess.getRandomVariableAccess().getCdfAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RandomVariable__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RandomVariable__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getRandomVariableAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__RandomVariable__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RandomVariable__Group_2__0__Impl
+	rule__RandomVariable__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getUnitKeyword_2_0()); }
+
+	'unit' 
+
+{ after(grammarAccess.getRandomVariableAccess().getUnitKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RandomVariable__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RandomVariable__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getUnitAssignment_2_1()); }
+(rule__RandomVariable__UnitAssignment_2_1)
+{ after(grammarAccess.getRandomVariableAccess().getUnitAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ContinuousFunction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group__0__Impl
+	rule__ContinuousFunction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getContinuousFunctionKeyword_0()); }
+
+	'ContinuousFunction' 
+
+{ after(grammarAccess.getContinuousFunctionAccess().getContinuousFunctionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousFunction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group__1__Impl
+	rule__ContinuousFunction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getContinuousFunctionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousFunction__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group__2__Impl
+	rule__ContinuousFunction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getNumArgsKeyword_2()); }
+
+	'numArgs' 
+
+{ after(grammarAccess.getContinuousFunctionAccess().getNumArgsKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousFunction__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group__3__Impl
+	rule__ContinuousFunction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getNumArgsAssignment_3()); }
+(rule__ContinuousFunction__NumArgsAssignment_3)
+{ after(grammarAccess.getContinuousFunctionAccess().getNumArgsAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousFunction__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group__4__Impl
+	rule__ContinuousFunction__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getEquationKeyword_4()); }
+
+	'equation' 
+
+{ after(grammarAccess.getContinuousFunctionAccess().getEquationKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousFunction__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group__5__Impl
+	rule__ContinuousFunction__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getEquationAssignment_5()); }
+(rule__ContinuousFunction__EquationAssignment_5)
+{ after(grammarAccess.getContinuousFunctionAccess().getEquationAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousFunction__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group__6__Impl
+	rule__ContinuousFunction__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getGroup_6()); }
+(rule__ContinuousFunction__Group_6__0)?
+{ after(grammarAccess.getContinuousFunctionAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousFunction__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getRightCurlyBracketKeyword_7()); }
+
+	'}' 
+
+{ after(grammarAccess.getContinuousFunctionAccess().getRightCurlyBracketKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ContinuousFunction__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group_6__0__Impl
+	rule__ContinuousFunction__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getUnitKeyword_6_0()); }
+
+	'unit' 
+
+{ after(grammarAccess.getContinuousFunctionAccess().getUnitKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ContinuousFunction__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ContinuousFunction__Group_6__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getUnitAssignment_6_1()); }
+(rule__ContinuousFunction__UnitAssignment_6_1)
+{ after(grammarAccess.getContinuousFunctionAccess().getUnitAssignment_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DiscreteFunction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__0__Impl
+	rule__DiscreteFunction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getDiscreteFunctionKeyword_0()); }
+
+	'DiscreteFunction' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getDiscreteFunctionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__1__Impl
+	rule__DiscreteFunction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__2__Impl
+	rule__DiscreteFunction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getNumArgsKeyword_2()); }
+
+	'numArgs' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getNumArgsKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__3__Impl
+	rule__DiscreteFunction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getNumArgsAssignment_3()); }
+(rule__DiscreteFunction__NumArgsAssignment_3)
+{ after(grammarAccess.getDiscreteFunctionAccess().getNumArgsAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__4__Impl
+	rule__DiscreteFunction__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getGroup_4()); }
+(rule__DiscreteFunction__Group_4__0)?
+{ after(grammarAccess.getDiscreteFunctionAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__5__Impl
+	rule__DiscreteFunction__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getXKeyword_5()); }
+
+	'x' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getXKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__6__Impl
+	rule__DiscreteFunction__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getLeftCurlyBracketKeyword_6()); }
+
+	'{' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getLeftCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__7__Impl
+	rule__DiscreteFunction__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getXAssignment_7()); }
+(rule__DiscreteFunction__XAssignment_7)
+{ after(grammarAccess.getDiscreteFunctionAccess().getXAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__8__Impl
+	rule__DiscreteFunction__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getGroup_8()); }
+(rule__DiscreteFunction__Group_8__0)*
+{ after(grammarAccess.getDiscreteFunctionAccess().getGroup_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__9__Impl
+	rule__DiscreteFunction__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getRightCurlyBracketKeyword_9()); }
+
+	'}' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getRightCurlyBracketKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__10__Impl
+	rule__DiscreteFunction__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getYKeyword_10()); }
+
+	'y' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getYKeyword_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__11__Impl
+	rule__DiscreteFunction__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getYAssignment_11()); }
+(rule__DiscreteFunction__YAssignment_11)
+{ after(grammarAccess.getDiscreteFunctionAccess().getYAssignment_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group__12__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getRightCurlyBracketKeyword_12()); }
+
+	'}' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getRightCurlyBracketKeyword_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DiscreteFunction__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group_4__0__Impl
+	rule__DiscreteFunction__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getUnitKeyword_4_0()); }
+
+	'unit' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getUnitKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getUnitAssignment_4_1()); }
+(rule__DiscreteFunction__UnitAssignment_4_1)
+{ after(grammarAccess.getDiscreteFunctionAccess().getUnitAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DiscreteFunction__Group_8__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group_8__0__Impl
+	rule__DiscreteFunction__Group_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group_8__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getCommaKeyword_8_0()); }
+
+	',' 
+
+{ after(grammarAccess.getDiscreteFunctionAccess().getCommaKeyword_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DiscreteFunction__Group_8__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DiscreteFunction__Group_8__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__Group_8__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getXAssignment_8_1()); }
+(rule__DiscreteFunction__XAssignment_8_1)
+{ after(grammarAccess.getDiscreteFunctionAccess().getXAssignment_8_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EFloat__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EFloat__Group__0__Impl
+	rule__EFloat__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EFloat__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEFloatAccess().getHyphenMinusKeyword_0()); }
+(
+	'-' 
+)?
+{ after(grammarAccess.getEFloatAccess().getHyphenMinusKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EFloat__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EFloat__Group__1__Impl
+	rule__EFloat__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EFloat__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEFloatAccess().getINTTerminalRuleCall_1()); }
+(	RULE_INT)?
+{ after(grammarAccess.getEFloatAccess().getINTTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EFloat__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EFloat__Group__2__Impl
+	rule__EFloat__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EFloat__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEFloatAccess().getFullStopKeyword_2()); }
+
+	'.' 
+
+{ after(grammarAccess.getEFloatAccess().getFullStopKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EFloat__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EFloat__Group__3__Impl
+	rule__EFloat__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EFloat__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEFloatAccess().getINTTerminalRuleCall_3()); }
+	RULE_INT
+{ after(grammarAccess.getEFloatAccess().getINTTerminalRuleCall_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EFloat__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EFloat__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EFloat__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEFloatAccess().getGroup_4()); }
+(rule__EFloat__Group_4__0)?
+{ after(grammarAccess.getEFloatAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__EFloat__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EFloat__Group_4__0__Impl
+	rule__EFloat__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EFloat__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEFloatAccess().getAlternatives_4_0()); }
+(rule__EFloat__Alternatives_4_0)
+{ after(grammarAccess.getEFloatAccess().getAlternatives_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EFloat__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EFloat__Group_4__1__Impl
+	rule__EFloat__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EFloat__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEFloatAccess().getHyphenMinusKeyword_4_1()); }
+(
+	'-' 
+)?
+{ after(grammarAccess.getEFloatAccess().getHyphenMinusKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EFloat__Group_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EFloat__Group_4__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EFloat__Group_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEFloatAccess().getINTTerminalRuleCall_4_2()); }
+	RULE_INT
+{ after(grammarAccess.getEFloatAccess().getINTTerminalRuleCall_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__SpeedUnit__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SpeedUnit__Group__0__Impl
+	rule__SpeedUnit__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getSpeedUnitKeyword_0()); }
+
+	'SpeedUnit' 
+
+{ after(grammarAccess.getSpeedUnitAccess().getSpeedUnitKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SpeedUnit__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SpeedUnit__Group__1__Impl
+	rule__SpeedUnit__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getSpeedUnitAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SpeedUnit__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SpeedUnit__Group__2__Impl
+	rule__SpeedUnit__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getPrefixKeyword_2()); }
+
+	'prefix' 
+
+{ after(grammarAccess.getSpeedUnitAccess().getPrefixKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SpeedUnit__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SpeedUnit__Group__3__Impl
+	rule__SpeedUnit__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getPrefixAssignment_3()); }
+(rule__SpeedUnit__PrefixAssignment_3)
+{ after(grammarAccess.getSpeedUnitAccess().getPrefixAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SpeedUnit__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SpeedUnit__Group__4__Impl
+	rule__SpeedUnit__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getValueKeyword_4()); }
+
+	'value' 
+
+{ after(grammarAccess.getSpeedUnitAccess().getValueKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SpeedUnit__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SpeedUnit__Group__5__Impl
+	rule__SpeedUnit__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getValueAssignment_5()); }
+(rule__SpeedUnit__ValueAssignment_5)
+{ after(grammarAccess.getSpeedUnitAccess().getValueAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SpeedUnit__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SpeedUnit__Group__6__Impl
+	rule__SpeedUnit__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getUnitKeyword_6()); }
+
+	'unit' 
+
+{ after(grammarAccess.getSpeedUnitAccess().getUnitKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SpeedUnit__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SpeedUnit__Group__7__Impl
+	rule__SpeedUnit__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getUnitAssignment_7()); }
+(rule__SpeedUnit__UnitAssignment_7)
+{ after(grammarAccess.getSpeedUnitAccess().getUnitAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SpeedUnit__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SpeedUnit__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getRightCurlyBracketKeyword_8()); }
+
+	'}' 
+
+{ after(grammarAccess.getSpeedUnitAccess().getRightCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__EDouble__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EDouble__Group__0__Impl
+	rule__EDouble__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EDouble__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEDoubleAccess().getHyphenMinusKeyword_0()); }
+(
+	'-' 
+)?
+{ after(grammarAccess.getEDoubleAccess().getHyphenMinusKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EDouble__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EDouble__Group__1__Impl
+	rule__EDouble__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EDouble__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEDoubleAccess().getINTTerminalRuleCall_1()); }
+(	RULE_INT)?
+{ after(grammarAccess.getEDoubleAccess().getINTTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EDouble__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EDouble__Group__2__Impl
+	rule__EDouble__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EDouble__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEDoubleAccess().getFullStopKeyword_2()); }
+
+	'.' 
+
+{ after(grammarAccess.getEDoubleAccess().getFullStopKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EDouble__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EDouble__Group__3__Impl
+	rule__EDouble__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EDouble__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEDoubleAccess().getINTTerminalRuleCall_3()); }
+	RULE_INT
+{ after(grammarAccess.getEDoubleAccess().getINTTerminalRuleCall_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EDouble__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EDouble__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EDouble__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEDoubleAccess().getGroup_4()); }
+(rule__EDouble__Group_4__0)?
+{ after(grammarAccess.getEDoubleAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__EDouble__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EDouble__Group_4__0__Impl
+	rule__EDouble__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EDouble__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEDoubleAccess().getAlternatives_4_0()); }
+(rule__EDouble__Alternatives_4_0)
+{ after(grammarAccess.getEDoubleAccess().getAlternatives_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EDouble__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EDouble__Group_4__1__Impl
+	rule__EDouble__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EDouble__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEDoubleAccess().getHyphenMinusKeyword_4_1()); }
+(
+	'-' 
+)?
+{ after(grammarAccess.getEDoubleAccess().getHyphenMinusKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EDouble__Group_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EDouble__Group_4__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EDouble__Group_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEDoubleAccess().getINTTerminalRuleCall_4_2()); }
+	RULE_INT
+{ after(grammarAccess.getEDoubleAccess().getINTTerminalRuleCall_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ELong__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ELong__Group__0__Impl
+	rule__ELong__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ELong__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getELongAccess().getHyphenMinusKeyword_0()); }
+(
+	'-' 
+)?
+{ after(grammarAccess.getELongAccess().getHyphenMinusKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ELong__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ELong__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ELong__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getELongAccess().getINTTerminalRuleCall_1()); }
+	RULE_INT
+{ after(grammarAccess.getELongAccess().getINTTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DataSeries__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group__0__Impl
+	rule__DataSeries__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getDataSeriesAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDataSeriesAccess().getDataSeriesAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataSeries__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group__1__Impl
+	rule__DataSeries__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getDataSeriesKeyword_1()); }
+
+	'DataSeries' 
+
+{ after(grammarAccess.getDataSeriesAccess().getDataSeriesKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataSeries__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group__2__Impl
+	rule__DataSeries__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getDataSeriesAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataSeries__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group__3__Impl
+	rule__DataSeries__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getGroup_3()); }
+(rule__DataSeries__Group_3__0)?
+{ after(grammarAccess.getDataSeriesAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataSeries__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getDataSeriesAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataSeries__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group_3__0__Impl
+	rule__DataSeries__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getDataKeyword_3_0()); }
+
+	'data' 
+
+{ after(grammarAccess.getDataSeriesAccess().getDataKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataSeries__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group_3__1__Impl
+	rule__DataSeries__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getLeftCurlyBracketKeyword_3_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getDataSeriesAccess().getLeftCurlyBracketKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataSeries__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group_3__2__Impl
+	rule__DataSeries__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getDataAssignment_3_2()); }
+(rule__DataSeries__DataAssignment_3_2)
+{ after(grammarAccess.getDataSeriesAccess().getDataAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataSeries__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group_3__3__Impl
+	rule__DataSeries__Group_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getGroup_3_3()); }
+(rule__DataSeries__Group_3_3__0)*
+{ after(grammarAccess.getDataSeriesAccess().getGroup_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataSeries__Group_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getRightCurlyBracketKeyword_3_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getDataSeriesAccess().getRightCurlyBracketKeyword_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataSeries__Group_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group_3_3__0__Impl
+	rule__DataSeries__Group_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getCommaKeyword_3_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getDataSeriesAccess().getCommaKeyword_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataSeries__Group_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataSeries__Group_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__Group_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getDataAssignment_3_3_1()); }
+(rule__DataSeries__DataAssignment_3_3_1)
+{ after(grammarAccess.getDataSeriesAccess().getDataAssignment_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TrafficSource__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__0__Impl
+	rule__TrafficSource__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getTrafficSourceKeyword_0()); }
+
+	'TrafficSource' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getTrafficSourceKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__1__Impl
+	rule__TrafficSource__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getIdAssignment_1()); }
+(rule__TrafficSource__IdAssignment_1)
+{ after(grammarAccess.getTrafficSourceAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__2__Impl
+	rule__TrafficSource__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__3__Impl
+	rule__TrafficSource__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__4__Impl
+	rule__TrafficSource__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getNameAssignment_4()); }
+(rule__TrafficSource__NameAssignment_4)
+{ after(grammarAccess.getTrafficSourceAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__5__Impl
+	rule__TrafficSource__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getGroup_5()); }
+(rule__TrafficSource__Group_5__0)?
+{ after(grammarAccess.getTrafficSourceAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__6__Impl
+	rule__TrafficSource__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getGroup_6()); }
+(rule__TrafficSource__Group_6__0)?
+{ after(grammarAccess.getTrafficSourceAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__7__Impl
+	rule__TrafficSource__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getWorkloadKeyword_7()); }
+
+	'workload' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getWorkloadKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__8__Impl
+	rule__TrafficSource__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_8()); }
+
+	'{' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__9__Impl
+	rule__TrafficSource__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getWorkloadAssignment_9()); }
+(rule__TrafficSource__WorkloadAssignment_9)
+{ after(grammarAccess.getTrafficSourceAccess().getWorkloadAssignment_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__10__Impl
+	rule__TrafficSource__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getGroup_10()); }
+(rule__TrafficSource__Group_10__0)*
+{ after(grammarAccess.getTrafficSourceAccess().getGroup_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__11__Impl
+	rule__TrafficSource__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_11()); }
+
+	'}' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group__12__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_12()); }
+
+	'}' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__TrafficSource__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_5__0__Impl
+	rule__TrafficSource__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_5__1__Impl
+	rule__TrafficSource__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_5__2__Impl
+	rule__TrafficSource__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__TrafficSource__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getTrafficSourceAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_5__3__Impl
+	rule__TrafficSource__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getGroup_5_3()); }
+(rule__TrafficSource__Group_5_3__0)*
+{ after(grammarAccess.getTrafficSourceAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__TrafficSource__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_5_3__0__Impl
+	rule__TrafficSource__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__TrafficSource__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getTrafficSourceAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TrafficSource__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_6__0__Impl
+	rule__TrafficSource__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAddressesKeyword_6_0()); }
+
+	'addresses' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getAddressesKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_6__1__Impl
+	rule__TrafficSource__Group_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_6_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_6__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_6__2__Impl
+	rule__TrafficSource__Group_6__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_6__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAddressesAssignment_6_2()); }
+(rule__TrafficSource__AddressesAssignment_6_2)
+{ after(grammarAccess.getTrafficSourceAccess().getAddressesAssignment_6_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_6__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_6__3__Impl
+	rule__TrafficSource__Group_6__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_6__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getGroup_6_3()); }
+(rule__TrafficSource__Group_6_3__0)*
+{ after(grammarAccess.getTrafficSourceAccess().getGroup_6_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_6__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_6__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_6__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_6_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_6_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__TrafficSource__Group_6_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_6_3__0__Impl
+	rule__TrafficSource__Group_6_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_6_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getCommaKeyword_6_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getCommaKeyword_6_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_6_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_6_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_6_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAddressesAssignment_6_3_1()); }
+(rule__TrafficSource__AddressesAssignment_6_3_1)
+{ after(grammarAccess.getTrafficSourceAccess().getAddressesAssignment_6_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TrafficSource__Group_10__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_10__0__Impl
+	rule__TrafficSource__Group_10__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_10__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getCommaKeyword_10_0()); }
+
+	',' 
+
+{ after(grammarAccess.getTrafficSourceAccess().getCommaKeyword_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TrafficSource__Group_10__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TrafficSource__Group_10__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__Group_10__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getWorkloadAssignment_10_1()); }
+(rule__TrafficSource__WorkloadAssignment_10_1)
+{ after(grammarAccess.getTrafficSourceAccess().getWorkloadAssignment_10_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__GenericWorkload__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group__0__Impl
+	rule__GenericWorkload__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getGenericWorkloadAction_0()); }
+(
+
+)
+{ after(grammarAccess.getGenericWorkloadAccess().getGenericWorkloadAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericWorkload__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group__1__Impl
+	rule__GenericWorkload__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getGenericWorkloadKeyword_1()); }
+
+	'GenericWorkload' 
+
+{ after(grammarAccess.getGenericWorkloadAccess().getGenericWorkloadKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericWorkload__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group__2__Impl
+	rule__GenericWorkload__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getGenericWorkloadAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericWorkload__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group__3__Impl
+	rule__GenericWorkload__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getGroup_3()); }
+(rule__GenericWorkload__Group_3__0)?
+{ after(grammarAccess.getGenericWorkloadAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericWorkload__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getGenericWorkloadAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__GenericWorkload__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group_3__0__Impl
+	rule__GenericWorkload__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getActionsKeyword_3_0()); }
+
+	'actions' 
+
+{ after(grammarAccess.getGenericWorkloadAccess().getActionsKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericWorkload__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group_3__1__Impl
+	rule__GenericWorkload__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getLeftCurlyBracketKeyword_3_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getGenericWorkloadAccess().getLeftCurlyBracketKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericWorkload__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group_3__2__Impl
+	rule__GenericWorkload__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getActionsAssignment_3_2()); }
+(rule__GenericWorkload__ActionsAssignment_3_2)
+{ after(grammarAccess.getGenericWorkloadAccess().getActionsAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericWorkload__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group_3__3__Impl
+	rule__GenericWorkload__Group_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getGroup_3_3()); }
+(rule__GenericWorkload__Group_3_3__0)*
+{ after(grammarAccess.getGenericWorkloadAccess().getGroup_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericWorkload__Group_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getRightCurlyBracketKeyword_3_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getGenericWorkloadAccess().getRightCurlyBracketKeyword_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__GenericWorkload__Group_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group_3_3__0__Impl
+	rule__GenericWorkload__Group_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getCommaKeyword_3_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getGenericWorkloadAccess().getCommaKeyword_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__GenericWorkload__Group_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__GenericWorkload__Group_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__Group_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getActionsAssignment_3_3_1()); }
+(rule__GenericWorkload__ActionsAssignment_3_3_1)
+{ after(grammarAccess.getGenericWorkloadAccess().getActionsAssignment_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__BranchAction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group__0__Impl
+	rule__BranchAction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getBranchActionKeyword_0()); }
+
+	'BranchAction' 
+
+{ after(grammarAccess.getBranchActionAccess().getBranchActionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BranchAction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group__1__Impl
+	rule__BranchAction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getBranchActionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BranchAction__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group__2__Impl
+	rule__BranchAction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getInternKeyword_2()); }
+
+	'intern' 
+
+{ after(grammarAccess.getBranchActionAccess().getInternKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BranchAction__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group__3__Impl
+	rule__BranchAction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getLeftCurlyBracketKeyword_3()); }
+
+	'{' 
+
+{ after(grammarAccess.getBranchActionAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BranchAction__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group__4__Impl
+	rule__BranchAction__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getInternAssignment_4()); }
+(rule__BranchAction__InternAssignment_4)
+{ after(grammarAccess.getBranchActionAccess().getInternAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BranchAction__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group__5__Impl
+	rule__BranchAction__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getGroup_5()); }
+(rule__BranchAction__Group_5__0)*
+{ after(grammarAccess.getBranchActionAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BranchAction__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group__6__Impl
+	rule__BranchAction__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getBranchActionAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BranchAction__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getRightCurlyBracketKeyword_7()); }
+
+	'}' 
+
+{ after(grammarAccess.getBranchActionAccess().getRightCurlyBracketKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__BranchAction__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group_5__0__Impl
+	rule__BranchAction__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getCommaKeyword_5_0()); }
+
+	',' 
+
+{ after(grammarAccess.getBranchActionAccess().getCommaKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__BranchAction__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__BranchAction__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getInternAssignment_5_1()); }
+(rule__BranchAction__InternAssignment_5_1)
+{ after(grammarAccess.getBranchActionAccess().getInternAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LoopAction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LoopAction__Group__0__Impl
+	rule__LoopAction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LoopAction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLoopActionAccess().getLoopActionKeyword_0()); }
+
+	'LoopAction' 
+
+{ after(grammarAccess.getLoopActionAccess().getLoopActionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LoopAction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LoopAction__Group__1__Impl
+	rule__LoopAction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LoopAction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLoopActionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getLoopActionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LoopAction__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LoopAction__Group__2__Impl
+	rule__LoopAction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LoopAction__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLoopActionAccess().getInternKeyword_2()); }
+
+	'intern' 
+
+{ after(grammarAccess.getLoopActionAccess().getInternKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LoopAction__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LoopAction__Group__3__Impl
+	rule__LoopAction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LoopAction__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLoopActionAccess().getInternAssignment_3()); }
+(rule__LoopAction__InternAssignment_3)
+{ after(grammarAccess.getLoopActionAccess().getInternAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LoopAction__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LoopAction__Group__4__Impl
+	rule__LoopAction__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LoopAction__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLoopActionAccess().getNumIterationsKeyword_4()); }
+
+	'numIterations' 
+
+{ after(grammarAccess.getLoopActionAccess().getNumIterationsKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LoopAction__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LoopAction__Group__5__Impl
+	rule__LoopAction__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LoopAction__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLoopActionAccess().getNumIterationsAssignment_5()); }
+(rule__LoopAction__NumIterationsAssignment_5)
+{ after(grammarAccess.getLoopActionAccess().getNumIterationsAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LoopAction__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LoopAction__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LoopAction__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLoopActionAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getLoopActionAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__SequenceAction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group__0__Impl
+	rule__SequenceAction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getSequenceActionKeyword_0()); }
+
+	'SequenceAction' 
+
+{ after(grammarAccess.getSequenceActionAccess().getSequenceActionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SequenceAction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group__1__Impl
+	rule__SequenceAction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getSequenceActionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SequenceAction__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group__2__Impl
+	rule__SequenceAction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getInternKeyword_2()); }
+
+	'intern' 
+
+{ after(grammarAccess.getSequenceActionAccess().getInternKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SequenceAction__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group__3__Impl
+	rule__SequenceAction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getLeftCurlyBracketKeyword_3()); }
+
+	'{' 
+
+{ after(grammarAccess.getSequenceActionAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SequenceAction__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group__4__Impl
+	rule__SequenceAction__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getInternAssignment_4()); }
+(rule__SequenceAction__InternAssignment_4)
+{ after(grammarAccess.getSequenceActionAccess().getInternAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SequenceAction__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group__5__Impl
+	rule__SequenceAction__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getGroup_5()); }
+(rule__SequenceAction__Group_5__0)*
+{ after(grammarAccess.getSequenceActionAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SequenceAction__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group__6__Impl
+	rule__SequenceAction__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getSequenceActionAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SequenceAction__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getRightCurlyBracketKeyword_7()); }
+
+	'}' 
+
+{ after(grammarAccess.getSequenceActionAccess().getRightCurlyBracketKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__SequenceAction__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group_5__0__Impl
+	rule__SequenceAction__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getCommaKeyword_5_0()); }
+
+	',' 
+
+{ after(grammarAccess.getSequenceActionAccess().getCommaKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SequenceAction__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SequenceAction__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getInternAssignment_5_1()); }
+(rule__SequenceAction__InternAssignment_5_1)
+{ after(grammarAccess.getSequenceActionAccess().getInternAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__StartAction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StartAction__Group__0__Impl
+	rule__StartAction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StartAction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStartActionAccess().getStartActionAction_0()); }
+(
+
+)
+{ after(grammarAccess.getStartActionAccess().getStartActionAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StartAction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StartAction__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StartAction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStartActionAccess().getStartActionKeyword_1()); }
+
+	'StartAction' 
+
+{ after(grammarAccess.getStartActionAccess().getStartActionKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__StopAction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StopAction__Group__0__Impl
+	rule__StopAction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StopAction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStopActionAccess().getStopActionAction_0()); }
+(
+
+)
+{ after(grammarAccess.getStopActionAccess().getStopActionAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__StopAction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__StopAction__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__StopAction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getStopActionAccess().getStopActionKeyword_1()); }
+
+	'StopAction' 
+
+{ after(grammarAccess.getStopActionAccess().getStopActionKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TransmitAction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TransmitAction__Group__0__Impl
+	rule__TransmitAction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TransmitAction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTransmitActionAccess().getTransmitActionKeyword_0()); }
+
+	'TransmitAction' 
+
+{ after(grammarAccess.getTransmitActionAccess().getTransmitActionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TransmitAction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TransmitAction__Group__1__Impl
+	rule__TransmitAction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TransmitAction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTransmitActionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getTransmitActionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TransmitAction__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TransmitAction__Group__2__Impl
+	rule__TransmitAction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TransmitAction__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTransmitActionAccess().getFlowKeyword_2()); }
+
+	'flow' 
+
+{ after(grammarAccess.getTransmitActionAccess().getFlowKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TransmitAction__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TransmitAction__Group__3__Impl
+	rule__TransmitAction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TransmitAction__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTransmitActionAccess().getFlowAssignment_3()); }
+(rule__TransmitAction__FlowAssignment_3)
+{ after(grammarAccess.getTransmitActionAccess().getFlowAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TransmitAction__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TransmitAction__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TransmitAction__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTransmitActionAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getTransmitActionAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__WaitAction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WaitAction__Group__0__Impl
+	rule__WaitAction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WaitAction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWaitActionAccess().getWaitActionKeyword_0()); }
+
+	'WaitAction' 
+
+{ after(grammarAccess.getWaitActionAccess().getWaitActionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WaitAction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WaitAction__Group__1__Impl
+	rule__WaitAction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WaitAction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWaitActionAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getWaitActionAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WaitAction__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WaitAction__Group__2__Impl
+	rule__WaitAction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WaitAction__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWaitActionAccess().getWaitTimeKeyword_2()); }
+
+	'waitTime' 
+
+{ after(grammarAccess.getWaitActionAccess().getWaitTimeKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WaitAction__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WaitAction__Group__3__Impl
+	rule__WaitAction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WaitAction__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWaitActionAccess().getWaitTimeAssignment_3()); }
+(rule__WaitAction__WaitTimeAssignment_3)
+{ after(grammarAccess.getWaitActionAccess().getWaitTimeAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WaitAction__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__WaitAction__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WaitAction__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWaitActionAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getWaitActionAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualNode__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__0__Impl
+	rule__VirtualNode__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getVirtualNodeKeyword_0()); }
+
+	'VirtualNode' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getVirtualNodeKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__1__Impl
+	rule__VirtualNode__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getIdAssignment_1()); }
+(rule__VirtualNode__IdAssignment_1)
+{ after(grammarAccess.getVirtualNodeAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__2__Impl
+	rule__VirtualNode__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__3__Impl
+	rule__VirtualNode__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__4__Impl
+	rule__VirtualNode__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getNameAssignment_4()); }
+(rule__VirtualNode__NameAssignment_4)
+{ after(grammarAccess.getVirtualNodeAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__5__Impl
+	rule__VirtualNode__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getGroup_5()); }
+(rule__VirtualNode__Group_5__0)?
+{ after(grammarAccess.getVirtualNodeAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__6__Impl
+	rule__VirtualNode__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getGroup_6()); }
+(rule__VirtualNode__Group_6__0)?
+{ after(grammarAccess.getVirtualNodeAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__7__Impl
+	rule__VirtualNode__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getHostedOnKeyword_7()); }
+
+	'hostedOn' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getHostedOnKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__8__Impl
+	rule__VirtualNode__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getHostedOnAssignment_8()); }
+(rule__VirtualNode__HostedOnAssignment_8)
+{ after(grammarAccess.getVirtualNodeAccess().getHostedOnAssignment_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__9__Impl
+	rule__VirtualNode__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getPerformanceKeyword_9()); }
+
+	'performance' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getPerformanceKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__10__Impl
+	rule__VirtualNode__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getPerformanceAssignment_10()); }
+(rule__VirtualNode__PerformanceAssignment_10)
+{ after(grammarAccess.getVirtualNodeAccess().getPerformanceAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__11__Impl
+	rule__VirtualNode__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getGroup_11()); }
+(rule__VirtualNode__Group_11__0)?
+{ after(grammarAccess.getVirtualNodeAccess().getGroup_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group__12__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getRightCurlyBracketKeyword_12()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getRightCurlyBracketKeyword_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualNode__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_5__0__Impl
+	rule__VirtualNode__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_5__1__Impl
+	rule__VirtualNode__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_5__2__Impl
+	rule__VirtualNode__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__VirtualNode__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getVirtualNodeAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_5__3__Impl
+	rule__VirtualNode__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getGroup_5_3()); }
+(rule__VirtualNode__Group_5_3__0)*
+{ after(grammarAccess.getVirtualNodeAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualNode__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_5_3__0__Impl
+	rule__VirtualNode__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__VirtualNode__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getVirtualNodeAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__VirtualNode__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_6__0__Impl
+	rule__VirtualNode__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getSoftwareKeyword_6_0()); }
+
+	'software' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getSoftwareKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_6__1__Impl
+	rule__VirtualNode__Group_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getLeftParenthesisKeyword_6_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getLeftParenthesisKeyword_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_6__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_6__2__Impl
+	rule__VirtualNode__Group_6__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_6__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getSoftwareAssignment_6_2()); }
+(rule__VirtualNode__SoftwareAssignment_6_2)
+{ after(grammarAccess.getVirtualNodeAccess().getSoftwareAssignment_6_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_6__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_6__3__Impl
+	rule__VirtualNode__Group_6__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_6__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getGroup_6_3()); }
+(rule__VirtualNode__Group_6_3__0)*
+{ after(grammarAccess.getVirtualNodeAccess().getGroup_6_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_6__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_6__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_6__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getRightParenthesisKeyword_6_4()); }
+
+	')' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getRightParenthesisKeyword_6_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualNode__Group_6_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_6_3__0__Impl
+	rule__VirtualNode__Group_6_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_6_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getCommaKeyword_6_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getCommaKeyword_6_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_6_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_6_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_6_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getSoftwareAssignment_6_3_1()); }
+(rule__VirtualNode__SoftwareAssignment_6_3_1)
+{ after(grammarAccess.getVirtualNodeAccess().getSoftwareAssignment_6_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__VirtualNode__Group_11__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_11__0__Impl
+	rule__VirtualNode__Group_11__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_11__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getInterfacesKeyword_11_0()); }
+
+	'interfaces' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getInterfacesKeyword_11_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_11__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_11__1__Impl
+	rule__VirtualNode__Group_11__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_11__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getLeftCurlyBracketKeyword_11_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getLeftCurlyBracketKeyword_11_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_11__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_11__2__Impl
+	rule__VirtualNode__Group_11__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_11__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getInterfacesAssignment_11_2()); }
+(rule__VirtualNode__InterfacesAssignment_11_2)
+{ after(grammarAccess.getVirtualNodeAccess().getInterfacesAssignment_11_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_11__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_11__3__Impl
+	rule__VirtualNode__Group_11__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_11__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getGroup_11_3()); }
+(rule__VirtualNode__Group_11_3__0)*
+{ after(grammarAccess.getVirtualNodeAccess().getGroup_11_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_11__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_11__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_11__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getRightCurlyBracketKeyword_11_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getRightCurlyBracketKeyword_11_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualNode__Group_11_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_11_3__0__Impl
+	rule__VirtualNode__Group_11_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_11_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getCommaKeyword_11_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getVirtualNodeAccess().getCommaKeyword_11_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNode__Group_11_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNode__Group_11_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__Group_11_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getInterfacesAssignment_11_3_1()); }
+(rule__VirtualNode__InterfacesAssignment_11_3_1)
+{ after(grammarAccess.getVirtualNodeAccess().getInterfacesAssignment_11_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PhysicalNode__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__0__Impl
+	rule__PhysicalNode__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getPhysicalNodeKeyword_0()); }
+
+	'PhysicalNode' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getPhysicalNodeKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__1__Impl
+	rule__PhysicalNode__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getIdAssignment_1()); }
+(rule__PhysicalNode__IdAssignment_1)
+{ after(grammarAccess.getPhysicalNodeAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__2__Impl
+	rule__PhysicalNode__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__3__Impl
+	rule__PhysicalNode__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__4__Impl
+	rule__PhysicalNode__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getNameAssignment_4()); }
+(rule__PhysicalNode__NameAssignment_4)
+{ after(grammarAccess.getPhysicalNodeAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__5__Impl
+	rule__PhysicalNode__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getGroup_5()); }
+(rule__PhysicalNode__Group_5__0)?
+{ after(grammarAccess.getPhysicalNodeAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__6__Impl
+	rule__PhysicalNode__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getGroup_6()); }
+(rule__PhysicalNode__Group_6__0)?
+{ after(grammarAccess.getPhysicalNodeAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__7__Impl
+	rule__PhysicalNode__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getGroup_7()); }
+(rule__PhysicalNode__Group_7__0)?
+{ after(grammarAccess.getPhysicalNodeAccess().getGroup_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__8__Impl
+	rule__PhysicalNode__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getPerformanceKeyword_8()); }
+
+	'performance' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getPerformanceKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__9__Impl
+	rule__PhysicalNode__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getPerformanceAssignment_9()); }
+(rule__PhysicalNode__PerformanceAssignment_9)
+{ after(grammarAccess.getPhysicalNodeAccess().getPerformanceAssignment_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__10__Impl
+	rule__PhysicalNode__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getGroup_10()); }
+(rule__PhysicalNode__Group_10__0)?
+{ after(grammarAccess.getPhysicalNodeAccess().getGroup_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group__11__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getRightCurlyBracketKeyword_11()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getRightCurlyBracketKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalNode__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_5__0__Impl
+	rule__PhysicalNode__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_5__1__Impl
+	rule__PhysicalNode__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_5__2__Impl
+	rule__PhysicalNode__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__PhysicalNode__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_5__3__Impl
+	rule__PhysicalNode__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getGroup_5_3()); }
+(rule__PhysicalNode__Group_5_3__0)*
+{ after(grammarAccess.getPhysicalNodeAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalNode__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_5_3__0__Impl
+	rule__PhysicalNode__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__PhysicalNode__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PhysicalNode__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_6__0__Impl
+	rule__PhysicalNode__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getSoftwareKeyword_6_0()); }
+
+	'software' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getSoftwareKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_6__1__Impl
+	rule__PhysicalNode__Group_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getLeftParenthesisKeyword_6_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getLeftParenthesisKeyword_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_6__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_6__2__Impl
+	rule__PhysicalNode__Group_6__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_6__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getSoftwareAssignment_6_2()); }
+(rule__PhysicalNode__SoftwareAssignment_6_2)
+{ after(grammarAccess.getPhysicalNodeAccess().getSoftwareAssignment_6_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_6__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_6__3__Impl
+	rule__PhysicalNode__Group_6__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_6__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getGroup_6_3()); }
+(rule__PhysicalNode__Group_6_3__0)*
+{ after(grammarAccess.getPhysicalNodeAccess().getGroup_6_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_6__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_6__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_6__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getRightParenthesisKeyword_6_4()); }
+
+	')' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getRightParenthesisKeyword_6_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalNode__Group_6_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_6_3__0__Impl
+	rule__PhysicalNode__Group_6_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_6_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_6_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_6_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_6_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_6_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_6_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getSoftwareAssignment_6_3_1()); }
+(rule__PhysicalNode__SoftwareAssignment_6_3_1)
+{ after(grammarAccess.getPhysicalNodeAccess().getSoftwareAssignment_6_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PhysicalNode__Group_7__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_7__0__Impl
+	rule__PhysicalNode__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_7__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getHostsKeyword_7_0()); }
+
+	'hosts' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getHostsKeyword_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_7__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_7__1__Impl
+	rule__PhysicalNode__Group_7__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_7__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getLeftParenthesisKeyword_7_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getLeftParenthesisKeyword_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_7__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_7__2__Impl
+	rule__PhysicalNode__Group_7__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_7__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getHostsAssignment_7_2()); }
+(rule__PhysicalNode__HostsAssignment_7_2)
+{ after(grammarAccess.getPhysicalNodeAccess().getHostsAssignment_7_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_7__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_7__3__Impl
+	rule__PhysicalNode__Group_7__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_7__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getGroup_7_3()); }
+(rule__PhysicalNode__Group_7_3__0)*
+{ after(grammarAccess.getPhysicalNodeAccess().getGroup_7_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_7__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_7__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_7__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getRightParenthesisKeyword_7_4()); }
+
+	')' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getRightParenthesisKeyword_7_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalNode__Group_7_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_7_3__0__Impl
+	rule__PhysicalNode__Group_7_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_7_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_7_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_7_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_7_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_7_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_7_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getHostsAssignment_7_3_1()); }
+(rule__PhysicalNode__HostsAssignment_7_3_1)
+{ after(grammarAccess.getPhysicalNodeAccess().getHostsAssignment_7_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PhysicalNode__Group_10__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_10__0__Impl
+	rule__PhysicalNode__Group_10__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_10__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getInterfacesKeyword_10_0()); }
+
+	'interfaces' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getInterfacesKeyword_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_10__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_10__1__Impl
+	rule__PhysicalNode__Group_10__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_10__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getLeftCurlyBracketKeyword_10_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getLeftCurlyBracketKeyword_10_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_10__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_10__2__Impl
+	rule__PhysicalNode__Group_10__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_10__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getInterfacesAssignment_10_2()); }
+(rule__PhysicalNode__InterfacesAssignment_10_2)
+{ after(grammarAccess.getPhysicalNodeAccess().getInterfacesAssignment_10_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_10__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_10__3__Impl
+	rule__PhysicalNode__Group_10__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_10__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getGroup_10_3()); }
+(rule__PhysicalNode__Group_10_3__0)*
+{ after(grammarAccess.getPhysicalNodeAccess().getGroup_10_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_10__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_10__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_10__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getRightCurlyBracketKeyword_10_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getRightCurlyBracketKeyword_10_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalNode__Group_10_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_10_3__0__Impl
+	rule__PhysicalNode__Group_10_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_10_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_10_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_10_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNode__Group_10_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNode__Group_10_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__Group_10_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getInterfacesAssignment_10_3_1()); }
+(rule__PhysicalNode__InterfacesAssignment_10_3_1)
+{ after(grammarAccess.getPhysicalNodeAccess().getInterfacesAssignment_10_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PhysicalLink__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__0__Impl
+	rule__PhysicalLink__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getPhysicalLinkKeyword_0()); }
+
+	'PhysicalLink' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getPhysicalLinkKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__1__Impl
+	rule__PhysicalLink__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getIdAssignment_1()); }
+(rule__PhysicalLink__IdAssignment_1)
+{ after(grammarAccess.getPhysicalLinkAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__2__Impl
+	rule__PhysicalLink__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__3__Impl
+	rule__PhysicalLink__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__4__Impl
+	rule__PhysicalLink__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getNameAssignment_4()); }
+(rule__PhysicalLink__NameAssignment_4)
+{ after(grammarAccess.getPhysicalLinkAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__5__Impl
+	rule__PhysicalLink__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getGroup_5()); }
+(rule__PhysicalLink__Group_5__0)?
+{ after(grammarAccess.getPhysicalLinkAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__6__Impl
+	rule__PhysicalLink__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getConnectsKeyword_6()); }
+
+	'connects' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getConnectsKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__7__Impl
+	rule__PhysicalLink__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getLeftParenthesisKeyword_7()); }
+
+	'(' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getLeftParenthesisKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__8__Impl
+	rule__PhysicalLink__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getConnectsAssignment_8()); }
+(rule__PhysicalLink__ConnectsAssignment_8)
+{ after(grammarAccess.getPhysicalLinkAccess().getConnectsAssignment_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__9__Impl
+	rule__PhysicalLink__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getGroup_9()); }
+(rule__PhysicalLink__Group_9__0)*
+{ after(grammarAccess.getPhysicalLinkAccess().getGroup_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__10__Impl
+	rule__PhysicalLink__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getRightParenthesisKeyword_10()); }
+
+	')' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getRightParenthesisKeyword_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__11__Impl
+	rule__PhysicalLink__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getPerformanceKeyword_11()); }
+
+	'performance' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getPerformanceKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__12__Impl
+	rule__PhysicalLink__Group__13
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getPerformanceAssignment_12()); }
+(rule__PhysicalLink__PerformanceAssignment_12)
+{ after(grammarAccess.getPhysicalLinkAccess().getPerformanceAssignment_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group__13
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group__13__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group__13__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getRightCurlyBracketKeyword_13()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getRightCurlyBracketKeyword_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalLink__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group_5__0__Impl
+	rule__PhysicalLink__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group_5__1__Impl
+	rule__PhysicalLink__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group_5__2__Impl
+	rule__PhysicalLink__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__PhysicalLink__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group_5__3__Impl
+	rule__PhysicalLink__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getGroup_5_3()); }
+(rule__PhysicalLink__Group_5_3__0)*
+{ after(grammarAccess.getPhysicalLinkAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalLink__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group_5_3__0__Impl
+	rule__PhysicalLink__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__PhysicalLink__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PhysicalLink__Group_9__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group_9__0__Impl
+	rule__PhysicalLink__Group_9__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group_9__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getCommaKeyword_9_0()); }
+
+	',' 
+
+{ after(grammarAccess.getPhysicalLinkAccess().getCommaKeyword_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalLink__Group_9__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalLink__Group_9__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__Group_9__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getConnectsAssignment_9_1()); }
+(rule__PhysicalLink__ConnectsAssignment_9_1)
+{ after(grammarAccess.getPhysicalLinkAccess().getConnectsAssignment_9_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__VirtualLink__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__0__Impl
+	rule__VirtualLink__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getVirtualLinkKeyword_0()); }
+
+	'VirtualLink' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getVirtualLinkKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__1__Impl
+	rule__VirtualLink__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getIdAssignment_1()); }
+(rule__VirtualLink__IdAssignment_1)
+{ after(grammarAccess.getVirtualLinkAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__2__Impl
+	rule__VirtualLink__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__3__Impl
+	rule__VirtualLink__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__4__Impl
+	rule__VirtualLink__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getNameAssignment_4()); }
+(rule__VirtualLink__NameAssignment_4)
+{ after(grammarAccess.getVirtualLinkAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__5__Impl
+	rule__VirtualLink__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getGroup_5()); }
+(rule__VirtualLink__Group_5__0)?
+{ after(grammarAccess.getVirtualLinkAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__6__Impl
+	rule__VirtualLink__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getConnectsKeyword_6()); }
+
+	'connects' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getConnectsKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__7__Impl
+	rule__VirtualLink__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getLeftParenthesisKeyword_7()); }
+
+	'(' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getLeftParenthesisKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__8__Impl
+	rule__VirtualLink__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getConnectsAssignment_8()); }
+(rule__VirtualLink__ConnectsAssignment_8)
+{ after(grammarAccess.getVirtualLinkAccess().getConnectsAssignment_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__9__Impl
+	rule__VirtualLink__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getGroup_9()); }
+(rule__VirtualLink__Group_9__0)*
+{ after(grammarAccess.getVirtualLinkAccess().getGroup_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__10__Impl
+	rule__VirtualLink__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getRightParenthesisKeyword_10()); }
+
+	')' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getRightParenthesisKeyword_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__11__Impl
+	rule__VirtualLink__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getPerformanceKeyword_11()); }
+
+	'performance' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getPerformanceKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__12__Impl
+	rule__VirtualLink__Group__13
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getPerformanceAssignment_12()); }
+(rule__VirtualLink__PerformanceAssignment_12)
+{ after(grammarAccess.getVirtualLinkAccess().getPerformanceAssignment_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group__13
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group__13__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group__13__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getRightCurlyBracketKeyword_13()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getRightCurlyBracketKeyword_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualLink__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group_5__0__Impl
+	rule__VirtualLink__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group_5__1__Impl
+	rule__VirtualLink__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group_5__2__Impl
+	rule__VirtualLink__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__VirtualLink__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getVirtualLinkAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group_5__3__Impl
+	rule__VirtualLink__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getGroup_5_3()); }
+(rule__VirtualLink__Group_5_3__0)*
+{ after(grammarAccess.getVirtualLinkAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualLink__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group_5_3__0__Impl
+	rule__VirtualLink__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__VirtualLink__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getVirtualLinkAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__VirtualLink__Group_9__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group_9__0__Impl
+	rule__VirtualLink__Group_9__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group_9__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getCommaKeyword_9_0()); }
+
+	',' 
+
+{ after(grammarAccess.getVirtualLinkAccess().getCommaKeyword_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualLink__Group_9__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualLink__Group_9__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__Group_9__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getConnectsAssignment_9_1()); }
+(rule__VirtualLink__ConnectsAssignment_9_1)
+{ after(grammarAccess.getVirtualLinkAccess().getConnectsAssignment_9_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ProtocolsRepository__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group__0__Impl
+	rule__ProtocolsRepository__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getProtocolsRepositoryKeyword_0()); }
+
+	'ProtocolsRepository' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getProtocolsRepositoryKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group__1__Impl
+	rule__ProtocolsRepository__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group__2__Impl
+	rule__ProtocolsRepository__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getGroup_2()); }
+(rule__ProtocolsRepository__Group_2__0)?
+{ after(grammarAccess.getProtocolsRepositoryAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group__3__Impl
+	rule__ProtocolsRepository__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getProtocolsKeyword_3()); }
+
+	'protocols' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getProtocolsKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group__4__Impl
+	rule__ProtocolsRepository__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getLeftCurlyBracketKeyword_4()); }
+
+	'{' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getLeftCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group__5__Impl
+	rule__ProtocolsRepository__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getProtocolsAssignment_5()); }
+(rule__ProtocolsRepository__ProtocolsAssignment_5)
+{ after(grammarAccess.getProtocolsRepositoryAccess().getProtocolsAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group__6__Impl
+	rule__ProtocolsRepository__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getGroup_6()); }
+(rule__ProtocolsRepository__Group_6__0)*
+{ after(grammarAccess.getProtocolsRepositoryAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group__7__Impl
+	rule__ProtocolsRepository__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getRightCurlyBracketKeyword_7()); }
+
+	'}' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getRightCurlyBracketKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getRightCurlyBracketKeyword_8()); }
+
+	'}' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getRightCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ProtocolsRepository__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group_2__0__Impl
+	rule__ProtocolsRepository__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getStacksKeyword_2_0()); }
+
+	'stacks' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getStacksKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group_2__1__Impl
+	rule__ProtocolsRepository__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getLeftCurlyBracketKeyword_2_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getLeftCurlyBracketKeyword_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group_2__2__Impl
+	rule__ProtocolsRepository__Group_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getStacksAssignment_2_2()); }
+(rule__ProtocolsRepository__StacksAssignment_2_2)
+{ after(grammarAccess.getProtocolsRepositoryAccess().getStacksAssignment_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group_2__3__Impl
+	rule__ProtocolsRepository__Group_2__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getGroup_2_3()); }
+(rule__ProtocolsRepository__Group_2_3__0)*
+{ after(grammarAccess.getProtocolsRepositoryAccess().getGroup_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group_2__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group_2__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group_2__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getRightCurlyBracketKeyword_2_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getRightCurlyBracketKeyword_2_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ProtocolsRepository__Group_2_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group_2_3__0__Impl
+	rule__ProtocolsRepository__Group_2_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group_2_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getCommaKeyword_2_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getCommaKeyword_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group_2_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group_2_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group_2_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getStacksAssignment_2_3_1()); }
+(rule__ProtocolsRepository__StacksAssignment_2_3_1)
+{ after(grammarAccess.getProtocolsRepositoryAccess().getStacksAssignment_2_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ProtocolsRepository__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group_6__0__Impl
+	rule__ProtocolsRepository__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getCommaKeyword_6_0()); }
+
+	',' 
+
+{ after(grammarAccess.getProtocolsRepositoryAccess().getCommaKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolsRepository__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolsRepository__Group_6__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getProtocolsAssignment_6_1()); }
+(rule__ProtocolsRepository__ProtocolsAssignment_6_1)
+{ after(grammarAccess.getProtocolsRepositoryAccess().getProtocolsAssignment_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RoutesRepository__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group__0__Impl
+	rule__RoutesRepository__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRoutesRepositoryAction_0()); }
+(
+
+)
+{ after(grammarAccess.getRoutesRepositoryAccess().getRoutesRepositoryAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group__1__Impl
+	rule__RoutesRepository__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRoutesRepositoryKeyword_1()); }
+
+	'RoutesRepository' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getRoutesRepositoryKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group__2__Impl
+	rule__RoutesRepository__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group__3__Impl
+	rule__RoutesRepository__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getGroup_3()); }
+(rule__RoutesRepository__Group_3__0)?
+{ after(grammarAccess.getRoutesRepositoryAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group__4__Impl
+	rule__RoutesRepository__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getGroup_4()); }
+(rule__RoutesRepository__Group_4__0)?
+{ after(grammarAccess.getRoutesRepositoryAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group__5__Impl
+	rule__RoutesRepository__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getGroup_5()); }
+(rule__RoutesRepository__Group_5__0)?
+{ after(grammarAccess.getRoutesRepositoryAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__RoutesRepository__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_3__0__Impl
+	rule__RoutesRepository__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRoutesKeyword_3_0()); }
+
+	'routes' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getRoutesKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_3__1__Impl
+	rule__RoutesRepository__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_3_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_3__2__Impl
+	rule__RoutesRepository__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRoutesAssignment_3_2()); }
+(rule__RoutesRepository__RoutesAssignment_3_2)
+{ after(grammarAccess.getRoutesRepositoryAccess().getRoutesAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_3__3__Impl
+	rule__RoutesRepository__Group_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getGroup_3_3()); }
+(rule__RoutesRepository__Group_3_3__0)*
+{ after(grammarAccess.getRoutesRepositoryAccess().getGroup_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_3_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__RoutesRepository__Group_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_3_3__0__Impl
+	rule__RoutesRepository__Group_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getCommaKeyword_3_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getCommaKeyword_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRoutesAssignment_3_3_1()); }
+(rule__RoutesRepository__RoutesAssignment_3_3_1)
+{ after(grammarAccess.getRoutesRepositoryAccess().getRoutesAssignment_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RoutesRepository__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_4__0__Impl
+	rule__RoutesRepository__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesKeyword_4_0()); }
+
+	'flowRoutes' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_4__1__Impl
+	rule__RoutesRepository__Group_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_4_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_4__2__Impl
+	rule__RoutesRepository__Group_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesAssignment_4_2()); }
+(rule__RoutesRepository__FlowRoutesAssignment_4_2)
+{ after(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesAssignment_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_4__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_4__3__Impl
+	rule__RoutesRepository__Group_4__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_4__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getGroup_4_3()); }
+(rule__RoutesRepository__Group_4_3__0)*
+{ after(grammarAccess.getRoutesRepositoryAccess().getGroup_4_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_4__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_4__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_4__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_4_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_4_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__RoutesRepository__Group_4_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_4_3__0__Impl
+	rule__RoutesRepository__Group_4_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_4_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getCommaKeyword_4_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getCommaKeyword_4_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_4_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_4_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_4_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesAssignment_4_3_1()); }
+(rule__RoutesRepository__FlowRoutesAssignment_4_3_1)
+{ after(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesAssignment_4_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__RoutesRepository__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_5__0__Impl
+	rule__RoutesRepository__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getDirectionsKeyword_5_0()); }
+
+	'directions' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getDirectionsKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_5__1__Impl
+	rule__RoutesRepository__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_5__2__Impl
+	rule__RoutesRepository__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getDirectionsAssignment_5_2()); }
+(rule__RoutesRepository__DirectionsAssignment_5_2)
+{ after(grammarAccess.getRoutesRepositoryAccess().getDirectionsAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_5__3__Impl
+	rule__RoutesRepository__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getGroup_5_3()); }
+(rule__RoutesRepository__Group_5_3__0)*
+{ after(grammarAccess.getRoutesRepositoryAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__RoutesRepository__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_5_3__0__Impl
+	rule__RoutesRepository__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getRoutesRepositoryAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RoutesRepository__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RoutesRepository__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getDirectionsAssignment_5_3_1()); }
+(rule__RoutesRepository__DirectionsAssignment_5_3_1)
+{ after(grammarAccess.getRoutesRepositoryAccess().getDirectionsAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ProtocolStack__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__0__Impl
+	rule__ProtocolStack__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getProtocolStackKeyword_0()); }
+
+	'ProtocolStack' 
+
+{ after(grammarAccess.getProtocolStackAccess().getProtocolStackKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__1__Impl
+	rule__ProtocolStack__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getNameAssignment_1()); }
+(rule__ProtocolStack__NameAssignment_1)
+{ after(grammarAccess.getProtocolStackAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__2__Impl
+	rule__ProtocolStack__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getProtocolStackAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__3__Impl
+	rule__ProtocolStack__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getGroup_3()); }
+(rule__ProtocolStack__Group_3__0)?
+{ after(grammarAccess.getProtocolStackAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__4__Impl
+	rule__ProtocolStack__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getLayersKeyword_4()); }
+
+	'layers' 
+
+{ after(grammarAccess.getProtocolStackAccess().getLayersKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__5__Impl
+	rule__ProtocolStack__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getLeftCurlyBracketKeyword_5()); }
+
+	'{' 
+
+{ after(grammarAccess.getProtocolStackAccess().getLeftCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__6__Impl
+	rule__ProtocolStack__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getLayersAssignment_6()); }
+(rule__ProtocolStack__LayersAssignment_6)
+{ after(grammarAccess.getProtocolStackAccess().getLayersAssignment_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__7__Impl
+	rule__ProtocolStack__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getGroup_7()); }
+(rule__ProtocolStack__Group_7__0)*
+{ after(grammarAccess.getProtocolStackAccess().getGroup_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__8__Impl
+	rule__ProtocolStack__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getRightCurlyBracketKeyword_8()); }
+
+	'}' 
+
+{ after(grammarAccess.getProtocolStackAccess().getRightCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group__9__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getRightCurlyBracketKeyword_9()); }
+
+	'}' 
+
+{ after(grammarAccess.getProtocolStackAccess().getRightCurlyBracketKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ProtocolStack__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group_3__0__Impl
+	rule__ProtocolStack__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getAlternativeNamesKeyword_3_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getProtocolStackAccess().getAlternativeNamesKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group_3__1__Impl
+	rule__ProtocolStack__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getLeftCurlyBracketKeyword_3_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getProtocolStackAccess().getLeftCurlyBracketKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group_3__2__Impl
+	rule__ProtocolStack__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getAlternativeNamesAssignment_3_2()); }
+(rule__ProtocolStack__AlternativeNamesAssignment_3_2)
+{ after(grammarAccess.getProtocolStackAccess().getAlternativeNamesAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group_3__3__Impl
+	rule__ProtocolStack__Group_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getGroup_3_3()); }
+(rule__ProtocolStack__Group_3_3__0)*
+{ after(grammarAccess.getProtocolStackAccess().getGroup_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getRightCurlyBracketKeyword_3_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getProtocolStackAccess().getRightCurlyBracketKeyword_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ProtocolStack__Group_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group_3_3__0__Impl
+	rule__ProtocolStack__Group_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getCommaKeyword_3_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getProtocolStackAccess().getCommaKeyword_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getAlternativeNamesAssignment_3_3_1()); }
+(rule__ProtocolStack__AlternativeNamesAssignment_3_3_1)
+{ after(grammarAccess.getProtocolStackAccess().getAlternativeNamesAssignment_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ProtocolStack__Group_7__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group_7__0__Impl
+	rule__ProtocolStack__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group_7__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getCommaKeyword_7_0()); }
+
+	',' 
+
+{ after(grammarAccess.getProtocolStackAccess().getCommaKeyword_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolStack__Group_7__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolStack__Group_7__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__Group_7__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getLayersAssignment_7_1()); }
+(rule__ProtocolStack__LayersAssignment_7_1)
+{ after(grammarAccess.getProtocolStackAccess().getLayersAssignment_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ProtocolLayer__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group__0__Impl
+	rule__ProtocolLayer__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getProtocolLayerKeyword_0()); }
+
+	'ProtocolLayer' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getProtocolLayerKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group__1__Impl
+	rule__ProtocolLayer__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getNameAssignment_1()); }
+(rule__ProtocolLayer__NameAssignment_1)
+{ after(grammarAccess.getProtocolLayerAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group__2__Impl
+	rule__ProtocolLayer__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group__3__Impl
+	rule__ProtocolLayer__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getGroup_3()); }
+(rule__ProtocolLayer__Group_3__0)?
+{ after(grammarAccess.getProtocolLayerAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group__4__Impl
+	rule__ProtocolLayer__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getProtocolKeyword_4()); }
+
+	'protocol' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getProtocolKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group__5__Impl
+	rule__ProtocolLayer__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getProtocolAssignment_5()); }
+(rule__ProtocolLayer__ProtocolAssignment_5)
+{ after(grammarAccess.getProtocolLayerAccess().getProtocolAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group__6__Impl
+	rule__ProtocolLayer__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getGroup_6()); }
+(rule__ProtocolLayer__Group_6__0)?
+{ after(grammarAccess.getProtocolLayerAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group__7__Impl
+	rule__ProtocolLayer__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getGroup_7()); }
+(rule__ProtocolLayer__Group_7__0)?
+{ after(grammarAccess.getProtocolLayerAccess().getGroup_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getRightCurlyBracketKeyword_8()); }
+
+	'}' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getRightCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ProtocolLayer__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_3__0__Impl
+	rule__ProtocolLayer__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getAlternativeNamesKeyword_3_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getAlternativeNamesKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_3__1__Impl
+	rule__ProtocolLayer__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getLeftCurlyBracketKeyword_3_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getLeftCurlyBracketKeyword_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_3__2__Impl
+	rule__ProtocolLayer__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getAlternativeNamesAssignment_3_2()); }
+(rule__ProtocolLayer__AlternativeNamesAssignment_3_2)
+{ after(grammarAccess.getProtocolLayerAccess().getAlternativeNamesAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_3__3__Impl
+	rule__ProtocolLayer__Group_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getGroup_3_3()); }
+(rule__ProtocolLayer__Group_3_3__0)*
+{ after(grammarAccess.getProtocolLayerAccess().getGroup_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getRightCurlyBracketKeyword_3_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getRightCurlyBracketKeyword_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__ProtocolLayer__Group_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_3_3__0__Impl
+	rule__ProtocolLayer__Group_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getCommaKeyword_3_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getCommaKeyword_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getAlternativeNamesAssignment_3_3_1()); }
+(rule__ProtocolLayer__AlternativeNamesAssignment_3_3_1)
+{ after(grammarAccess.getProtocolLayerAccess().getAlternativeNamesAssignment_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ProtocolLayer__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_6__0__Impl
+	rule__ProtocolLayer__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getIsCarriedByKeyword_6_0()); }
+
+	'isCarriedBy' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getIsCarriedByKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_6__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getIsCarriedByAssignment_6_1()); }
+(rule__ProtocolLayer__IsCarriedByAssignment_6_1)
+{ after(grammarAccess.getProtocolLayerAccess().getIsCarriedByAssignment_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ProtocolLayer__Group_7__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_7__0__Impl
+	rule__ProtocolLayer__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_7__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getCarriesKeyword_7_0()); }
+
+	'carries' 
+
+{ after(grammarAccess.getProtocolLayerAccess().getCarriesKeyword_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ProtocolLayer__Group_7__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ProtocolLayer__Group_7__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__Group_7__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getCarriesAssignment_7_1()); }
+(rule__ProtocolLayer__CarriesAssignment_7_1)
+{ after(grammarAccess.getProtocolLayerAccess().getCarriesAssignment_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Route__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__0__Impl
+	rule__Route__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getRouteKeyword_0()); }
+
+	'Route' 
+
+{ after(grammarAccess.getRouteAccess().getRouteKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__1__Impl
+	rule__Route__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getIdAssignment_1()); }
+(rule__Route__IdAssignment_1)
+{ after(grammarAccess.getRouteAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__2__Impl
+	rule__Route__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getRouteAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__3__Impl
+	rule__Route__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getRouteAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__4__Impl
+	rule__Route__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getNameAssignment_4()); }
+(rule__Route__NameAssignment_4)
+{ after(grammarAccess.getRouteAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__5__Impl
+	rule__Route__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getGroup_5()); }
+(rule__Route__Group_5__0)?
+{ after(grammarAccess.getRouteAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__6__Impl
+	rule__Route__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getGroup_6()); }
+(rule__Route__Group_6__0)?
+{ after(grammarAccess.getRouteAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__7__Impl
+	rule__Route__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getStartKeyword_7()); }
+
+	'start' 
+
+{ after(grammarAccess.getRouteAccess().getStartKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__8__Impl
+	rule__Route__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getStartAssignment_8()); }
+(rule__Route__StartAssignment_8)
+{ after(grammarAccess.getRouteAccess().getStartAssignment_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__9__Impl
+	rule__Route__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getEndKeyword_9()); }
+
+	'end' 
+
+{ after(grammarAccess.getRouteAccess().getEndKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__10__Impl
+	rule__Route__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getEndAssignment_10()); }
+(rule__Route__EndAssignment_10)
+{ after(grammarAccess.getRouteAccess().getEndAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__11__Impl
+	rule__Route__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getGroup_11()); }
+(rule__Route__Group_11__0)?
+{ after(grammarAccess.getRouteAccess().getGroup_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group__12__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getRightCurlyBracketKeyword_12()); }
+
+	'}' 
+
+{ after(grammarAccess.getRouteAccess().getRightCurlyBracketKeyword_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Route__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_5__0__Impl
+	rule__Route__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getRouteAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_5__1__Impl
+	rule__Route__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getRouteAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_5__2__Impl
+	rule__Route__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__Route__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getRouteAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_5__3__Impl
+	rule__Route__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getGroup_5_3()); }
+(rule__Route__Group_5_3__0)*
+{ after(grammarAccess.getRouteAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getRouteAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Route__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_5_3__0__Impl
+	rule__Route__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getRouteAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__Route__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getRouteAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Route__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_6__0__Impl
+	rule__Route__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getNumHopsKeyword_6_0()); }
+
+	'numHops' 
+
+{ after(grammarAccess.getRouteAccess().getNumHopsKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_6__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getNumHopsAssignment_6_1()); }
+(rule__Route__NumHopsAssignment_6_1)
+{ after(grammarAccess.getRouteAccess().getNumHopsAssignment_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Route__Group_11__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_11__0__Impl
+	rule__Route__Group_11__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_11__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getHopsKeyword_11_0()); }
+
+	'hops' 
+
+{ after(grammarAccess.getRouteAccess().getHopsKeyword_11_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Route__Group_11__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Route__Group_11__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__Group_11__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getHopsAssignment_11_1()); }
+(rule__Route__HopsAssignment_11_1)
+{ after(grammarAccess.getRouteAccess().getHopsAssignment_11_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__FlowRoute__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__0__Impl
+	rule__FlowRoute__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getFlowRouteKeyword_0()); }
+
+	'FlowRoute' 
+
+{ after(grammarAccess.getFlowRouteAccess().getFlowRouteKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__1__Impl
+	rule__FlowRoute__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getIdAssignment_1()); }
+(rule__FlowRoute__IdAssignment_1)
+{ after(grammarAccess.getFlowRouteAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__2__Impl
+	rule__FlowRoute__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getFlowRouteAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__3__Impl
+	rule__FlowRoute__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getFlowRouteAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__4__Impl
+	rule__FlowRoute__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getNameAssignment_4()); }
+(rule__FlowRoute__NameAssignment_4)
+{ after(grammarAccess.getFlowRouteAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__5__Impl
+	rule__FlowRoute__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getGroup_5()); }
+(rule__FlowRoute__Group_5__0)?
+{ after(grammarAccess.getFlowRouteAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__6__Impl
+	rule__FlowRoute__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getGroup_6()); }
+(rule__FlowRoute__Group_6__0)?
+{ after(grammarAccess.getFlowRouteAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__7__Impl
+	rule__FlowRoute__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getFlowKeyword_7()); }
+
+	'flow' 
+
+{ after(grammarAccess.getFlowRouteAccess().getFlowKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__8__Impl
+	rule__FlowRoute__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getFlowAssignment_8()); }
+(rule__FlowRoute__FlowAssignment_8)
+{ after(grammarAccess.getFlowRouteAccess().getFlowAssignment_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__9__Impl
+	rule__FlowRoute__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getStartKeyword_9()); }
+
+	'start' 
+
+{ after(grammarAccess.getFlowRouteAccess().getStartKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__10__Impl
+	rule__FlowRoute__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getStartAssignment_10()); }
+(rule__FlowRoute__StartAssignment_10)
+{ after(grammarAccess.getFlowRouteAccess().getStartAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__11__Impl
+	rule__FlowRoute__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getEndKeyword_11()); }
+
+	'end' 
+
+{ after(grammarAccess.getFlowRouteAccess().getEndKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__12__Impl
+	rule__FlowRoute__Group__13
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getEndAssignment_12()); }
+(rule__FlowRoute__EndAssignment_12)
+{ after(grammarAccess.getFlowRouteAccess().getEndAssignment_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__13
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__13__Impl
+	rule__FlowRoute__Group__14
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__13__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getGroup_13()); }
+(rule__FlowRoute__Group_13__0)?
+{ after(grammarAccess.getFlowRouteAccess().getGroup_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group__14
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group__14__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group__14__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getRightCurlyBracketKeyword_14()); }
+
+	'}' 
+
+{ after(grammarAccess.getFlowRouteAccess().getRightCurlyBracketKeyword_14()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__FlowRoute__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_5__0__Impl
+	rule__FlowRoute__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getFlowRouteAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_5__1__Impl
+	rule__FlowRoute__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getFlowRouteAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_5__2__Impl
+	rule__FlowRoute__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__FlowRoute__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getFlowRouteAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_5__3__Impl
+	rule__FlowRoute__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getGroup_5_3()); }
+(rule__FlowRoute__Group_5_3__0)*
+{ after(grammarAccess.getFlowRouteAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getFlowRouteAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__FlowRoute__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_5_3__0__Impl
+	rule__FlowRoute__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getFlowRouteAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__FlowRoute__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getFlowRouteAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__FlowRoute__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_6__0__Impl
+	rule__FlowRoute__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getNumHopsKeyword_6_0()); }
+
+	'numHops' 
+
+{ after(grammarAccess.getFlowRouteAccess().getNumHopsKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_6__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getNumHopsAssignment_6_1()); }
+(rule__FlowRoute__NumHopsAssignment_6_1)
+{ after(grammarAccess.getFlowRouteAccess().getNumHopsAssignment_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__FlowRoute__Group_13__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_13__0__Impl
+	rule__FlowRoute__Group_13__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_13__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getHopsKeyword_13_0()); }
+
+	'hops' 
+
+{ after(grammarAccess.getFlowRouteAccess().getHopsKeyword_13_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__FlowRoute__Group_13__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__FlowRoute__Group_13__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__Group_13__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getHopsAssignment_13_1()); }
+(rule__FlowRoute__HopsAssignment_13_1)
+{ after(grammarAccess.getFlowRouteAccess().getHopsAssignment_13_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Direction__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__0__Impl
+	rule__Direction__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getIsDefaultAssignment_0()); }
+(rule__Direction__IsDefaultAssignment_0)?
+{ after(grammarAccess.getDirectionAccess().getIsDefaultAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__1__Impl
+	rule__Direction__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getDirectionKeyword_1()); }
+
+	'Direction' 
+
+{ after(grammarAccess.getDirectionAccess().getDirectionKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__2__Impl
+	rule__Direction__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getIdAssignment_2()); }
+(rule__Direction__IdAssignment_2)
+{ after(grammarAccess.getDirectionAccess().getIdAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__3__Impl
+	rule__Direction__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getLeftCurlyBracketKeyword_3()); }
+
+	'{' 
+
+{ after(grammarAccess.getDirectionAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__4__Impl
+	rule__Direction__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getNameKeyword_4()); }
+
+	'name' 
+
+{ after(grammarAccess.getDirectionAccess().getNameKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__5__Impl
+	rule__Direction__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getNameAssignment_5()); }
+(rule__Direction__NameAssignment_5)
+{ after(grammarAccess.getDirectionAccess().getNameAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__6__Impl
+	rule__Direction__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getGroup_6()); }
+(rule__Direction__Group_6__0)?
+{ after(grammarAccess.getDirectionAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__7__Impl
+	rule__Direction__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getGroup_7()); }
+(rule__Direction__Group_7__0)?
+{ after(grammarAccess.getDirectionAccess().getGroup_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__8__Impl
+	rule__Direction__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getOnNodeKeyword_8()); }
+
+	'onNode' 
+
+{ after(grammarAccess.getDirectionAccess().getOnNodeKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__9__Impl
+	rule__Direction__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getOnNodeAssignment_9()); }
+(rule__Direction__OnNodeAssignment_9)
+{ after(grammarAccess.getDirectionAccess().getOnNodeAssignment_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__10__Impl
+	rule__Direction__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getGroup_10()); }
+(rule__Direction__Group_10__0)?
+{ after(grammarAccess.getDirectionAccess().getGroup_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__11__Impl
+	rule__Direction__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getViaKeyword_11()); }
+
+	'via' 
+
+{ after(grammarAccess.getDirectionAccess().getViaKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__12__Impl
+	rule__Direction__Group__13
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getViaAssignment_12()); }
+(rule__Direction__ViaAssignment_12)
+{ after(grammarAccess.getDirectionAccess().getViaAssignment_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group__13
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group__13__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group__13__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getRightCurlyBracketKeyword_13()); }
+
+	'}' 
+
+{ after(grammarAccess.getDirectionAccess().getRightCurlyBracketKeyword_13()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Direction__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_6__0__Impl
+	rule__Direction__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getAlternativeNamesKeyword_6_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getDirectionAccess().getAlternativeNamesKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_6__1__Impl
+	rule__Direction__Group_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getLeftCurlyBracketKeyword_6_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getDirectionAccess().getLeftCurlyBracketKeyword_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group_6__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_6__2__Impl
+	rule__Direction__Group_6__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_6__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getAlternativeNamesAssignment_6_2()); }
+(rule__Direction__AlternativeNamesAssignment_6_2)
+{ after(grammarAccess.getDirectionAccess().getAlternativeNamesAssignment_6_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group_6__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_6__3__Impl
+	rule__Direction__Group_6__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_6__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getGroup_6_3()); }
+(rule__Direction__Group_6_3__0)*
+{ after(grammarAccess.getDirectionAccess().getGroup_6_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group_6__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_6__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_6__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getRightCurlyBracketKeyword_6_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getDirectionAccess().getRightCurlyBracketKeyword_6_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Direction__Group_6_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_6_3__0__Impl
+	rule__Direction__Group_6_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_6_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getCommaKeyword_6_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getDirectionAccess().getCommaKeyword_6_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group_6_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_6_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_6_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getAlternativeNamesAssignment_6_3_1()); }
+(rule__Direction__AlternativeNamesAssignment_6_3_1)
+{ after(grammarAccess.getDirectionAccess().getAlternativeNamesAssignment_6_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Direction__Group_7__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_7__0__Impl
+	rule__Direction__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_7__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getDistanceKeyword_7_0()); }
+
+	'distance' 
+
+{ after(grammarAccess.getDirectionAccess().getDistanceKeyword_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group_7__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_7__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_7__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getDistanceAssignment_7_1()); }
+(rule__Direction__DistanceAssignment_7_1)
+{ after(grammarAccess.getDirectionAccess().getDistanceAssignment_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Direction__Group_10__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_10__0__Impl
+	rule__Direction__Group_10__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_10__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getFlowKeyword_10_0()); }
+
+	'flow' 
+
+{ after(grammarAccess.getDirectionAccess().getFlowKeyword_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Direction__Group_10__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Direction__Group_10__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__Group_10__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getFlowAssignment_10_1()); }
+(rule__Direction__FlowAssignment_10_1)
+{ after(grammarAccess.getDirectionAccess().getFlowAssignment_10_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Hop__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Hop__Group__0__Impl
+	rule__Hop__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getHopKeyword_0()); }
+
+	'Hop' 
+
+{ after(grammarAccess.getHopAccess().getHopKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Hop__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Hop__Group__1__Impl
+	rule__Hop__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getHopAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Hop__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Hop__Group__2__Impl
+	rule__Hop__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getInterfacerefKeyword_2()); }
+
+	'interfaceref' 
+
+{ after(grammarAccess.getHopAccess().getInterfacerefKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Hop__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Hop__Group__3__Impl
+	rule__Hop__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getInterfacerefAssignment_3()); }
+(rule__Hop__InterfacerefAssignment_3)
+{ after(grammarAccess.getHopAccess().getInterfacerefAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Hop__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Hop__Group__4__Impl
+	rule__Hop__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getGroup_4()); }
+(rule__Hop__Group_4__0)?
+{ after(grammarAccess.getHopAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Hop__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Hop__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getHopAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Hop__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Hop__Group_4__0__Impl
+	rule__Hop__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getNextHopKeyword_4_0()); }
+
+	'nextHop' 
+
+{ after(grammarAccess.getHopAccess().getNextHopKeyword_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Hop__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Hop__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getNextHopAssignment_4_1()); }
+(rule__Hop__NextHopAssignment_4_1)
+{ after(grammarAccess.getHopAccess().getNextHopAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EIntegerObject__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EIntegerObject__Group__0__Impl
+	rule__EIntegerObject__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EIntegerObject__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEIntegerObjectAccess().getHyphenMinusKeyword_0()); }
+(
+	'-' 
+)?
+{ after(grammarAccess.getEIntegerObjectAccess().getHyphenMinusKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EIntegerObject__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EIntegerObject__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EIntegerObject__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEIntegerObjectAccess().getINTTerminalRuleCall_1()); }
+	RULE_INT
+{ after(grammarAccess.getEIntegerObjectAccess().getINTTerminalRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PhysicalNetworkInterface__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__0__Impl
+	rule__PhysicalNetworkInterface__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getPhysicalNetworkInterfaceKeyword_0()); }
+
+	'PhysicalNetworkInterface' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getPhysicalNetworkInterfaceKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__1__Impl
+	rule__PhysicalNetworkInterface__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getIdAssignment_1()); }
+(rule__PhysicalNetworkInterface__IdAssignment_1)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__2__Impl
+	rule__PhysicalNetworkInterface__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__3__Impl
+	rule__PhysicalNetworkInterface__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__4__Impl
+	rule__PhysicalNetworkInterface__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getNameAssignment_4()); }
+(rule__PhysicalNetworkInterface__NameAssignment_4)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__5__Impl
+	rule__PhysicalNetworkInterface__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_5()); }
+(rule__PhysicalNetworkInterface__Group_5__0)?
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__6__Impl
+	rule__PhysicalNetworkInterface__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackKeyword_6()); }
+
+	'usedProtocolStack' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__7__Impl
+	rule__PhysicalNetworkInterface__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackAssignment_7()); }
+(rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_7)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__8__Impl
+	rule__PhysicalNetworkInterface__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_8()); }
+(rule__PhysicalNetworkInterface__Group_8__0)?
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__9__Impl
+	rule__PhysicalNetworkInterface__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getPerformanceKeyword_9()); }
+
+	'performance' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getPerformanceKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__10__Impl
+	rule__PhysicalNetworkInterface__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getPerformanceAssignment_10()); }
+(rule__PhysicalNetworkInterface__PerformanceAssignment_10)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getPerformanceAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group__11__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getRightCurlyBracketKeyword_11()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getRightCurlyBracketKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalNetworkInterface__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_5__0__Impl
+	rule__PhysicalNetworkInterface__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_5__1__Impl
+	rule__PhysicalNetworkInterface__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_5__2__Impl
+	rule__PhysicalNetworkInterface__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_5__3__Impl
+	rule__PhysicalNetworkInterface__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_5_3()); }
+(rule__PhysicalNetworkInterface__Group_5_3__0)*
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalNetworkInterface__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_5_3__0__Impl
+	rule__PhysicalNetworkInterface__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__PhysicalNetworkInterface__Group_8__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_8__0__Impl
+	rule__PhysicalNetworkInterface__Group_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_8__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesKeyword_8_0()); }
+
+	'addresses' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesKeyword_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_8__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_8__1__Impl
+	rule__PhysicalNetworkInterface__Group_8__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_8__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getLeftCurlyBracketKeyword_8_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getLeftCurlyBracketKeyword_8_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_8__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_8__2__Impl
+	rule__PhysicalNetworkInterface__Group_8__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_8__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesAssignment_8_2()); }
+(rule__PhysicalNetworkInterface__AddressesAssignment_8_2)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesAssignment_8_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_8__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_8__3__Impl
+	rule__PhysicalNetworkInterface__Group_8__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_8__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_8_3()); }
+(rule__PhysicalNetworkInterface__Group_8_3__0)*
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_8_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_8__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_8__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_8__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getRightCurlyBracketKeyword_8_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getRightCurlyBracketKeyword_8_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__PhysicalNetworkInterface__Group_8_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_8_3__0__Impl
+	rule__PhysicalNetworkInterface__Group_8_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_8_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getCommaKeyword_8_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getCommaKeyword_8_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__PhysicalNetworkInterface__Group_8_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__PhysicalNetworkInterface__Group_8_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__Group_8_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesAssignment_8_3_1()); }
+(rule__PhysicalNetworkInterface__AddressesAssignment_8_3_1)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesAssignment_8_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__VirtualNetworkInterface__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__0__Impl
+	rule__VirtualNetworkInterface__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getVirtualNetworkInterfaceKeyword_0()); }
+
+	'VirtualNetworkInterface' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getVirtualNetworkInterfaceKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__1__Impl
+	rule__VirtualNetworkInterface__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getIdAssignment_1()); }
+(rule__VirtualNetworkInterface__IdAssignment_1)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__2__Impl
+	rule__VirtualNetworkInterface__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__3__Impl
+	rule__VirtualNetworkInterface__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getNameKeyword_3()); }
+
+	'name' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getNameKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__4__Impl
+	rule__VirtualNetworkInterface__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getNameAssignment_4()); }
+(rule__VirtualNetworkInterface__NameAssignment_4)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__5__Impl
+	rule__VirtualNetworkInterface__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_5()); }
+(rule__VirtualNetworkInterface__Group_5__0)?
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__6__Impl
+	rule__VirtualNetworkInterface__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackKeyword_6()); }
+
+	'usedProtocolStack' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__7__Impl
+	rule__VirtualNetworkInterface__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackAssignment_7()); }
+(rule__VirtualNetworkInterface__UsedProtocolStackAssignment_7)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__8__Impl
+	rule__VirtualNetworkInterface__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_8()); }
+(rule__VirtualNetworkInterface__Group_8__0)?
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__9__Impl
+	rule__VirtualNetworkInterface__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getPerformanceKeyword_9()); }
+
+	'performance' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getPerformanceKeyword_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__10__Impl
+	rule__VirtualNetworkInterface__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getPerformanceAssignment_10()); }
+(rule__VirtualNetworkInterface__PerformanceAssignment_10)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getPerformanceAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group__11__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getRightCurlyBracketKeyword_11()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getRightCurlyBracketKeyword_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualNetworkInterface__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_5__0__Impl
+	rule__VirtualNetworkInterface__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesKeyword_5_0()); }
+
+	'alternativeNames' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_5__1__Impl
+	rule__VirtualNetworkInterface__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getLeftCurlyBracketKeyword_5_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getLeftCurlyBracketKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_5__2__Impl
+	rule__VirtualNetworkInterface__Group_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesAssignment_5_2()); }
+(rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_2)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesAssignment_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_5__3__Impl
+	rule__VirtualNetworkInterface__Group_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_5_3()); }
+(rule__VirtualNetworkInterface__Group_5_3__0)*
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_5__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getRightCurlyBracketKeyword_5_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getRightCurlyBracketKeyword_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualNetworkInterface__Group_5_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_5_3__0__Impl
+	rule__VirtualNetworkInterface__Group_5_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_5_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getCommaKeyword_5_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getCommaKeyword_5_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_5_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_5_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_5_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesAssignment_5_3_1()); }
+(rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_1)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesAssignment_5_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__VirtualNetworkInterface__Group_8__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_8__0__Impl
+	rule__VirtualNetworkInterface__Group_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_8__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesKeyword_8_0()); }
+
+	'addresses' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesKeyword_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_8__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_8__1__Impl
+	rule__VirtualNetworkInterface__Group_8__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_8__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getLeftCurlyBracketKeyword_8_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getLeftCurlyBracketKeyword_8_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_8__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_8__2__Impl
+	rule__VirtualNetworkInterface__Group_8__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_8__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesAssignment_8_2()); }
+(rule__VirtualNetworkInterface__AddressesAssignment_8_2)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesAssignment_8_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_8__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_8__3__Impl
+	rule__VirtualNetworkInterface__Group_8__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_8__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_8_3()); }
+(rule__VirtualNetworkInterface__Group_8_3__0)*
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_8_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_8__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_8__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_8__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getRightCurlyBracketKeyword_8_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getRightCurlyBracketKeyword_8_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__VirtualNetworkInterface__Group_8_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_8_3__0__Impl
+	rule__VirtualNetworkInterface__Group_8_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_8_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getCommaKeyword_8_3_0()); }
+
+	',' 
+
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getCommaKeyword_8_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__VirtualNetworkInterface__Group_8_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__VirtualNetworkInterface__Group_8_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__Group_8_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesAssignment_8_3_1()); }
+(rule__VirtualNetworkInterface__AddressesAssignment_8_3_1)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesAssignment_8_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+rule__NetworkInfrastructure__DataCenterNameAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getDataCenterNameEStringParserRuleCall_3_0()); }
+	ruleEString{ after(grammarAccess.getNetworkInfrastructureAccess().getDataCenterNameEStringParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__DataCenterAltNameAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getDataCenterAltNameEStringParserRuleCall_5_0()); }
+	ruleEString{ after(grammarAccess.getNetworkInfrastructureAccess().getDataCenterAltNameEStringParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__TrafficAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getTrafficNetworkTrafficParserRuleCall_7_0()); }
+	ruleNetworkTraffic{ after(grammarAccess.getNetworkInfrastructureAccess().getTrafficNetworkTrafficParserRuleCall_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__StructureAssignment_9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getStructureNetworkStructureParserRuleCall_9_0()); }
+	ruleNetworkStructure{ after(grammarAccess.getNetworkInfrastructureAccess().getStructureNetworkStructureParserRuleCall_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__ConfigurationAssignment_11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getConfigurationNetworkConfigurationParserRuleCall_11_0()); }
+	ruleNetworkConfiguration{ after(grammarAccess.getNetworkInfrastructureAccess().getConfigurationNetworkConfigurationParserRuleCall_11_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__ParamsAssignment_12_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getParamsExperimentParamParserRuleCall_12_2_0()); }
+	ruleExperimentParam{ after(grammarAccess.getNetworkInfrastructureAccess().getParamsExperimentParamParserRuleCall_12_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkInfrastructure__ParamsAssignment_12_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkInfrastructureAccess().getParamsExperimentParamParserRuleCall_12_3_1_0()); }
+	ruleExperimentParam{ after(grammarAccess.getNetworkInfrastructureAccess().getParamsExperimentParamParserRuleCall_12_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getIsUpEBooleanParserRuleCall_4_0()); }
+	ruleEBoolean{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getIsUpEBooleanParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_6_0()); }
+	ruleDependency{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getMTUEIntParserRuleCall_8_0()); }
+	ruleEInt{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getMTUEIntParserRuleCall_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getInterfaceSpeedSpeedUnitParserRuleCall_10_0()); }
+	ruleSpeedUnit{ after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getInterfaceSpeedSpeedUnitParserRuleCall_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getIsUpEBooleanParserRuleCall_4_0()); }
+	ruleEBoolean{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getIsUpEBooleanParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_6_0()); }
+	ruleDependency{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getMTUEIntParserRuleCall_8_0()); }
+	ruleEInt{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getMTUEIntParserRuleCall_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getInterfaceSpeedSpeedUnitParserRuleCall_10_0()); }
+	ruleSpeedUnit{ after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getInterfaceSpeedSpeedUnitParserRuleCall_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__PropagationDelayAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getPropagationDelayDependencyParserRuleCall_4_0()); }
+	ruleDependency{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getPropagationDelayDependencyParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkPerfSpecAccess().getMaxSupportedBandwidthDependencyParserRuleCall_5_1_0()); }
+	ruleDependency{ after(grammarAccess.getVirtualLinkPerfSpecAccess().getMaxSupportedBandwidthDependencyParserRuleCall_5_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getPropagationDelayDependencyParserRuleCall_4_0()); }
+	ruleDependency{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getPropagationDelayDependencyParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkPerfSpecAccess().getMaxSupportedBandwidthDependencyParserRuleCall_5_1_0()); }
+	ruleDependency{ after(grammarAccess.getPhysicalLinkPerfSpecAccess().getMaxSupportedBandwidthDependencyParserRuleCall_5_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntermediateNodePerfSpec__DataplaneAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getDataplaneDataPlanePerfSpecParserRuleCall_3_0()); }
+	ruleDataPlanePerfSpec{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getDataplaneDataPlanePerfSpecParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IntermediateNodePerfSpec__ControlplaneAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIntermediateNodePerfSpecAccess().getControlplaneControlPlanePerfSpecParserRuleCall_5_0()); }
+	ruleControlPlanePerfSpec{ after(grammarAccess.getIntermediateNodePerfSpecAccess().getControlplaneControlPlanePerfSpecParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getProcessingLatencyDependencyParserRuleCall_3_0()); }
+	ruleDependency{ after(grammarAccess.getControlPlanePerfSpecAccess().getProcessingLatencyDependencyParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getProcessingBandwidthReqPSDependencyParserRuleCall_5_0()); }
+	ruleDependency{ after(grammarAccess.getControlPlanePerfSpecAccess().getProcessingBandwidthReqPSDependencyParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getControlPlanePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_7_0()); }
+	ruleDependency{ after(grammarAccess.getControlPlanePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__ForwardingLatencyAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingLatencyDependencyParserRuleCall_3_0()); }
+	ruleDependency{ after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingLatencyDependencyParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthPPSDependencyParserRuleCall_5_0()); }
+	ruleDependency{ after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthPPSDependencyParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthBPSDependencyParserRuleCall_7_0()); }
+	ruleDependency{ after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthBPSDependencyParserRuleCall_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataPlanePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_9_0()); }
+	ruleDependency{ after(grammarAccess.getDataPlanePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getSoftwareLayersDelayDependencyParserRuleCall_3_0()); }
+	ruleDependency{ after(grammarAccess.getEndNodePerfSpecAccess().getSoftwareLayersDelayDependencyParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__DataplaneAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getDataplaneDataPlanePerfSpecParserRuleCall_4_1_0()); }
+	ruleDataPlanePerfSpec{ after(grammarAccess.getEndNodePerfSpecAccess().getDataplaneDataPlanePerfSpecParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EndNodePerfSpec__ControlplaneAssignment_5_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEndNodePerfSpecAccess().getControlplaneControlPlanePerfSpecParserRuleCall_5_1_0()); }
+	ruleControlPlanePerfSpec{ after(grammarAccess.getEndNodePerfSpecAccess().getControlplaneControlPlanePerfSpecParserRuleCall_5_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__FlowsAssignment_3_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getFlowsFlowParserRuleCall_3_2_0()); }
+	ruleFlow{ after(grammarAccess.getNetworkTrafficAccess().getFlowsFlowParserRuleCall_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__FlowsAssignment_3_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getFlowsFlowParserRuleCall_3_3_1_0()); }
+	ruleFlow{ after(grammarAccess.getNetworkTrafficAccess().getFlowsFlowParserRuleCall_3_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__SoftwareAssignment_4_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getSoftwareSoftwareComponentParserRuleCall_4_2_0()); }
+	ruleSoftwareComponent{ after(grammarAccess.getNetworkTrafficAccess().getSoftwareSoftwareComponentParserRuleCall_4_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkTraffic__SoftwareAssignment_4_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkTrafficAccess().getSoftwareSoftwareComponentParserRuleCall_4_3_1_0()); }
+	ruleSoftwareComponent{ after(grammarAccess.getNetworkTrafficAccess().getSoftwareSoftwareComponentParserRuleCall_4_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__NodesAssignment_3_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getNodesNodeParserRuleCall_3_2_0()); }
+	ruleNode{ after(grammarAccess.getNetworkStructureAccess().getNodesNodeParserRuleCall_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__NodesAssignment_3_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getNodesNodeParserRuleCall_3_3_1_0()); }
+	ruleNode{ after(grammarAccess.getNetworkStructureAccess().getNodesNodeParserRuleCall_3_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__LinksAssignment_4_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getLinksLinkParserRuleCall_4_2_0()); }
+	ruleLink{ after(grammarAccess.getNetworkStructureAccess().getLinksLinkParserRuleCall_4_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkStructure__LinksAssignment_4_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkStructureAccess().getLinksLinkParserRuleCall_4_3_1_0()); }
+	ruleLink{ after(grammarAccess.getNetworkStructureAccess().getLinksLinkParserRuleCall_4_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkConfiguration__ProtocolsAndStacksAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getProtocolsAndStacksProtocolsRepositoryParserRuleCall_3_0()); }
+	ruleProtocolsRepository{ after(grammarAccess.getNetworkConfigurationAccess().getProtocolsAndStacksProtocolsRepositoryParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkConfiguration__RoutesAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkConfigurationAccess().getRoutesRoutesRepositoryParserRuleCall_5_0()); }
+	ruleRoutesRepository{ after(grammarAccess.getNetworkConfigurationAccess().getRoutesRoutesRepositoryParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExperimentParam__NameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExperimentParamAccess().getNameEStringParserRuleCall_1_0()); }
+	ruleEString{ after(grammarAccess.getExperimentParamAccess().getNameEStringParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExperimentParam__ValueAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExperimentParamAccess().getValueEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getExperimentParamAccess().getValueEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getSoftwareComponentAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getSoftwareComponentAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__DeployedOnAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getDeployedOnNodeCrossReference_7_0()); }
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getDeployedOnNodeEStringParserRuleCall_7_0_1()); }
+	ruleEString{ after(grammarAccess.getSoftwareComponentAccess().getDeployedOnNodeEStringParserRuleCall_7_0_1()); }
+)
+{ after(grammarAccess.getSoftwareComponentAccess().getDeployedOnNodeCrossReference_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__TrafficSourcesAssignment_8_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesTrafficSourceParserRuleCall_8_2_0()); }
+	ruleTrafficSource{ after(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesTrafficSourceParserRuleCall_8_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SoftwareComponent__TrafficSourcesAssignment_8_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesTrafficSourceParserRuleCall_8_3_1_0()); }
+	ruleTrafficSource{ after(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesTrafficSourceParserRuleCall_8_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__AddressAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getAddressEStringParserRuleCall_3_1_0()); }
+	ruleEString{ after(grammarAccess.getEntityAddressAccess().getAddressEStringParserRuleCall_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityAddress__AddressGivenByAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityAddressAccess().getAddressGivenByNetworkProtocolCrossReference_4_1_0()); }
+(
+{ before(grammarAccess.getEntityAddressAccess().getAddressGivenByNetworkProtocolEStringParserRuleCall_4_1_0_1()); }
+	ruleEString{ after(grammarAccess.getEntityAddressAccess().getAddressGivenByNetworkProtocolEStringParserRuleCall_4_1_0_1()); }
+)
+{ after(grammarAccess.getEntityAddressAccess().getAddressGivenByNetworkProtocolCrossReference_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__StartStateAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getStartStateStartStateKeyword_0_0()); }
+(
+{ before(grammarAccess.getONOFFFlowAccess().getStartStateStartStateKeyword_0_0()); }
+
+	'startState' 
+
+{ after(grammarAccess.getONOFFFlowAccess().getStartStateStartStateKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getONOFFFlowAccess().getStartStateStartStateKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__IdAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getIdIDTerminalRuleCall_2_0()); }
+	RULE_ID{ after(grammarAccess.getONOFFFlowAccess().getIdIDTerminalRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__NameAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getNameEStringParserRuleCall_5_0()); }
+	ruleEString{ after(grammarAccess.getONOFFFlowAccess().getNameEStringParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__AlternativeNamesAssignment_6_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getAlternativeNamesEStringParserRuleCall_6_2_0()); }
+	ruleEString{ after(grammarAccess.getONOFFFlowAccess().getAlternativeNamesEStringParserRuleCall_6_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__AlternativeNamesAssignment_6_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getAlternativeNamesEStringParserRuleCall_6_3_1_0()); }
+	ruleEString{ after(grammarAccess.getONOFFFlowAccess().getAlternativeNamesEStringParserRuleCall_6_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentSoftwareComponentCrossReference_7_1_0()); }
+(
+{ before(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentSoftwareComponentEStringParserRuleCall_7_1_0_1()); }
+	ruleEString{ after(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentSoftwareComponentEStringParserRuleCall_7_1_0_1()); }
+)
+{ after(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentSoftwareComponentCrossReference_7_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentSoftwareComponentCrossReference_8_1_0()); }
+(
+{ before(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentSoftwareComponentEStringParserRuleCall_8_1_0_1()); }
+	ruleEString{ after(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentSoftwareComponentEStringParserRuleCall_8_1_0_1()); }
+)
+{ after(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentSoftwareComponentCrossReference_8_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__DestinationAddressesAssignment_9_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_9_2_0()); }
+	ruleEntityAddress{ after(grammarAccess.getONOFFFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_9_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__DestinationAddressesAssignment_9_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_9_3_1_0()); }
+	ruleEntityAddress{ after(grammarAccess.getONOFFFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_9_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__ONstateIATAssignment_11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getONstateIATDependencyParserRuleCall_11_0()); }
+	ruleDependency{ after(grammarAccess.getONOFFFlowAccess().getONstateIATDependencyParserRuleCall_11_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__ONstateDurationAssignment_13
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getONstateDurationDependencyParserRuleCall_13_0()); }
+	ruleDependency{ after(grammarAccess.getONOFFFlowAccess().getONstateDurationDependencyParserRuleCall_13_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__OFFstateDurationAssignment_15
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getOFFstateDurationDependencyParserRuleCall_15_0()); }
+	ruleDependency{ after(grammarAccess.getONOFFFlowAccess().getOFFstateDurationDependencyParserRuleCall_15_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ONOFFFlow__PacketLengthAssignment_17
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getONOFFFlowAccess().getPacketLengthDependencyParserRuleCall_17_0()); }
+	ruleDependency{ after(grammarAccess.getONOFFFlowAccess().getPacketLengthDependencyParserRuleCall_17_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getGenericFlowAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getGenericFlowAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getGenericFlowAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getGenericFlowAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__DestinationSoftwareComponentAssignment_6_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentSoftwareComponentCrossReference_6_1_0()); }
+(
+{ before(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentSoftwareComponentEStringParserRuleCall_6_1_0_1()); }
+	ruleEString{ after(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentSoftwareComponentEStringParserRuleCall_6_1_0_1()); }
+)
+{ after(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentSoftwareComponentCrossReference_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__SourceSoftwareComponentAssignment_7_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentSoftwareComponentCrossReference_7_1_0()); }
+(
+{ before(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentSoftwareComponentEStringParserRuleCall_7_1_0_1()); }
+	ruleEString{ after(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentSoftwareComponentEStringParserRuleCall_7_1_0_1()); }
+)
+{ after(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentSoftwareComponentCrossReference_7_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__DestinationAddressesAssignment_8_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_8_2_0()); }
+	ruleEntityAddress{ after(grammarAccess.getGenericFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_8_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__DestinationAddressesAssignment_8_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_8_3_1_0()); }
+	ruleEntityAddress{ after(grammarAccess.getGenericFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_8_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericFlow__DataSizeAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericFlowAccess().getDataSizeDependencyParserRuleCall_10_0()); }
+	ruleDependency{ after(grammarAccess.getGenericFlowAccess().getDataSizeDependencyParserRuleCall_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__DeliveryGuaranteedAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getDeliveryGuaranteedDeliveryGuaranteedKeyword_0_0()); }
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getDeliveryGuaranteedDeliveryGuaranteedKeyword_0_0()); }
+
+	'deliveryGuaranteed' 
+
+{ after(grammarAccess.getNetworkProtocolAccess().getDeliveryGuaranteedDeliveryGuaranteedKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getNetworkProtocolAccess().getDeliveryGuaranteedDeliveryGuaranteedKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__NameAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getNameEStringParserRuleCall_2_0()); }
+	ruleEString{ after(grammarAccess.getNetworkProtocolAccess().getNameEStringParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__AlternativeNamesAssignment_4_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesEStringParserRuleCall_4_2_0()); }
+	ruleEString{ after(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesEStringParserRuleCall_4_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__AlternativeNamesAssignment_4_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesEStringParserRuleCall_4_3_1_0()); }
+	ruleEString{ after(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesEStringParserRuleCall_4_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__MtuAssignment_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getMtuEIntParserRuleCall_6_0()); }
+	ruleEInt{ after(grammarAccess.getNetworkProtocolAccess().getMtuEIntParserRuleCall_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__HeadersLengthAssignment_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getHeadersLengthEIntParserRuleCall_8_0()); }
+	ruleEInt{ after(grammarAccess.getNetworkProtocolAccess().getHeadersLengthEIntParserRuleCall_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__DataUnitLengthAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getDataUnitLengthEIntParserRuleCall_10_0()); }
+	ruleEInt{ after(grammarAccess.getNetworkProtocolAccess().getDataUnitLengthEIntParserRuleCall_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__NetworkProtocol__ConnectionlessAssignment_11_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNetworkProtocolAccess().getConnectionlessEBooleanParserRuleCall_11_1_0()); }
+	ruleEBoolean{ after(grammarAccess.getNetworkProtocolAccess().getConnectionlessEBooleanParserRuleCall_11_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__ValueAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getValueEDoubleParserRuleCall_3_0()); }
+	ruleEDouble{ after(grammarAccess.getConstantDoubleVariableAccess().getValueEDoubleParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantDoubleVariable__UnitAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantDoubleVariableAccess().getUnitDNIUnitParserRuleCall_4_1_0()); }
+	ruleDNIUnit{ after(grammarAccess.getConstantDoubleVariableAccess().getUnitDNIUnitParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__ValueAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getValueELongParserRuleCall_3_0()); }
+	ruleELong{ after(grammarAccess.getConstantLongVariableAccess().getValueELongParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstantLongVariable__UnitAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstantLongVariableAccess().getUnitDNIUnitParserRuleCall_4_1_0()); }
+	ruleDNIUnit{ after(grammarAccess.getConstantLongVariableAccess().getUnitDNIUnitParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__UnitAssignment_2_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getUnitDNIUnitParserRuleCall_2_1_0()); }
+	ruleDNIUnit{ after(grammarAccess.getRandomVariableAccess().getUnitDNIUnitParserRuleCall_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RandomVariable__CdfAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRandomVariableAccess().getCdfFunctionParserRuleCall_4_0()); }
+	ruleFunction{ after(grammarAccess.getRandomVariableAccess().getCdfFunctionParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__NumArgsAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getNumArgsEIntParserRuleCall_3_0()); }
+	ruleEInt{ after(grammarAccess.getContinuousFunctionAccess().getNumArgsEIntParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__EquationAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getEquationEStringParserRuleCall_5_0()); }
+	ruleEString{ after(grammarAccess.getContinuousFunctionAccess().getEquationEStringParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ContinuousFunction__UnitAssignment_6_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getContinuousFunctionAccess().getUnitDNIUnitParserRuleCall_6_1_0()); }
+	ruleDNIUnit{ after(grammarAccess.getContinuousFunctionAccess().getUnitDNIUnitParserRuleCall_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__NumArgsAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getNumArgsEIntParserRuleCall_3_0()); }
+	ruleEInt{ after(grammarAccess.getDiscreteFunctionAccess().getNumArgsEIntParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__UnitAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getUnitDNIUnitParserRuleCall_4_1_0()); }
+	ruleDNIUnit{ after(grammarAccess.getDiscreteFunctionAccess().getUnitDNIUnitParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__XAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getXDataSeriesParserRuleCall_7_0()); }
+	ruleDataSeries{ after(grammarAccess.getDiscreteFunctionAccess().getXDataSeriesParserRuleCall_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__XAssignment_8_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getXDataSeriesParserRuleCall_8_1_0()); }
+	ruleDataSeries{ after(grammarAccess.getDiscreteFunctionAccess().getXDataSeriesParserRuleCall_8_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DiscreteFunction__YAssignment_11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscreteFunctionAccess().getYDataSeriesParserRuleCall_11_0()); }
+	ruleDataSeries{ after(grammarAccess.getDiscreteFunctionAccess().getYDataSeriesParserRuleCall_11_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__PrefixAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getPrefixUnitPrefixEnumRuleCall_3_0()); }
+	ruleUnitPrefix{ after(grammarAccess.getSpeedUnitAccess().getPrefixUnitPrefixEnumRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__ValueAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getValueEFloatParserRuleCall_5_0()); }
+	ruleEFloat{ after(grammarAccess.getSpeedUnitAccess().getValueEFloatParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SpeedUnit__UnitAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSpeedUnitAccess().getUnitSpeedEnumRuleCall_7_0()); }
+	ruleSpeed{ after(grammarAccess.getSpeedUnitAccess().getUnitSpeedEnumRuleCall_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__DataAssignment_3_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getDataEDoubleParserRuleCall_3_2_0()); }
+	ruleEDouble{ after(grammarAccess.getDataSeriesAccess().getDataEDoubleParserRuleCall_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataSeries__DataAssignment_3_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataSeriesAccess().getDataEDoubleParserRuleCall_3_3_1_0()); }
+	ruleEDouble{ after(grammarAccess.getDataSeriesAccess().getDataEDoubleParserRuleCall_3_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getTrafficSourceAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getTrafficSourceAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getTrafficSourceAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getTrafficSourceAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__AddressesAssignment_6_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAddressesEntityAddressParserRuleCall_6_2_0()); }
+	ruleEntityAddress{ after(grammarAccess.getTrafficSourceAccess().getAddressesEntityAddressParserRuleCall_6_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__AddressesAssignment_6_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getAddressesEntityAddressParserRuleCall_6_3_1_0()); }
+	ruleEntityAddress{ after(grammarAccess.getTrafficSourceAccess().getAddressesEntityAddressParserRuleCall_6_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__WorkloadAssignment_9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getWorkloadWorkloadParserRuleCall_9_0()); }
+	ruleWorkload{ after(grammarAccess.getTrafficSourceAccess().getWorkloadWorkloadParserRuleCall_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TrafficSource__WorkloadAssignment_10_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTrafficSourceAccess().getWorkloadWorkloadParserRuleCall_10_1_0()); }
+	ruleWorkload{ after(grammarAccess.getTrafficSourceAccess().getWorkloadWorkloadParserRuleCall_10_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__ActionsAssignment_3_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getActionsAbstractActionParserRuleCall_3_2_0()); }
+	ruleAbstractAction{ after(grammarAccess.getGenericWorkloadAccess().getActionsAbstractActionParserRuleCall_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__GenericWorkload__ActionsAssignment_3_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getGenericWorkloadAccess().getActionsAbstractActionParserRuleCall_3_3_1_0()); }
+	ruleAbstractAction{ after(grammarAccess.getGenericWorkloadAccess().getActionsAbstractActionParserRuleCall_3_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__InternAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getInternAbstractActionParserRuleCall_4_0()); }
+	ruleAbstractAction{ after(grammarAccess.getBranchActionAccess().getInternAbstractActionParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BranchAction__InternAssignment_5_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBranchActionAccess().getInternAbstractActionParserRuleCall_5_1_0()); }
+	ruleAbstractAction{ after(grammarAccess.getBranchActionAccess().getInternAbstractActionParserRuleCall_5_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LoopAction__InternAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLoopActionAccess().getInternAbstractActionParserRuleCall_3_0()); }
+	ruleAbstractAction{ after(grammarAccess.getLoopActionAccess().getInternAbstractActionParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LoopAction__NumIterationsAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLoopActionAccess().getNumIterationsDependencyParserRuleCall_5_0()); }
+	ruleDependency{ after(grammarAccess.getLoopActionAccess().getNumIterationsDependencyParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__InternAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getInternAbstractActionParserRuleCall_4_0()); }
+	ruleAbstractAction{ after(grammarAccess.getSequenceActionAccess().getInternAbstractActionParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SequenceAction__InternAssignment_5_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSequenceActionAccess().getInternAbstractActionParserRuleCall_5_1_0()); }
+	ruleAbstractAction{ after(grammarAccess.getSequenceActionAccess().getInternAbstractActionParserRuleCall_5_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TransmitAction__FlowAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTransmitActionAccess().getFlowFlowCrossReference_3_0()); }
+(
+{ before(grammarAccess.getTransmitActionAccess().getFlowFlowEStringParserRuleCall_3_0_1()); }
+	ruleEString{ after(grammarAccess.getTransmitActionAccess().getFlowFlowEStringParserRuleCall_3_0_1()); }
+)
+{ after(grammarAccess.getTransmitActionAccess().getFlowFlowCrossReference_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WaitAction__WaitTimeAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getWaitActionAccess().getWaitTimeDependencyParserRuleCall_3_0()); }
+	ruleDependency{ after(grammarAccess.getWaitActionAccess().getWaitTimeDependencyParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getVirtualNodeAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getVirtualNodeAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getVirtualNodeAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getVirtualNodeAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__SoftwareAssignment_6_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentCrossReference_6_2_0()); }
+(
+{ before(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_2_0_1()); }
+	ruleEString{ after(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_2_0_1()); }
+)
+{ after(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentCrossReference_6_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__SoftwareAssignment_6_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentCrossReference_6_3_1_0()); }
+(
+{ before(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_3_1_0_1()); }
+	ruleEString{ after(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_3_1_0_1()); }
+)
+{ after(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentCrossReference_6_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__HostedOnAssignment_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getHostedOnPhysicalNodeCrossReference_8_0()); }
+(
+{ before(grammarAccess.getVirtualNodeAccess().getHostedOnPhysicalNodeEStringParserRuleCall_8_0_1()); }
+	ruleEString{ after(grammarAccess.getVirtualNodeAccess().getHostedOnPhysicalNodeEStringParserRuleCall_8_0_1()); }
+)
+{ after(grammarAccess.getVirtualNodeAccess().getHostedOnPhysicalNodeCrossReference_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__PerformanceAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getPerformancePerformanceSpecificationParserRuleCall_10_0()); }
+	rulePerformanceSpecification{ after(grammarAccess.getVirtualNodeAccess().getPerformancePerformanceSpecificationParserRuleCall_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__InterfacesAssignment_11_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getInterfacesVirtualNetworkInterfaceParserRuleCall_11_2_0()); }
+	ruleVirtualNetworkInterface{ after(grammarAccess.getVirtualNodeAccess().getInterfacesVirtualNetworkInterfaceParserRuleCall_11_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNode__InterfacesAssignment_11_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNodeAccess().getInterfacesVirtualNetworkInterfaceParserRuleCall_11_3_1_0()); }
+	ruleVirtualNetworkInterface{ after(grammarAccess.getVirtualNodeAccess().getInterfacesVirtualNetworkInterfaceParserRuleCall_11_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getPhysicalNodeAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getPhysicalNodeAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__SoftwareAssignment_6_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentCrossReference_6_2_0()); }
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_2_0_1()); }
+	ruleEString{ after(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_2_0_1()); }
+)
+{ after(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentCrossReference_6_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__SoftwareAssignment_6_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentCrossReference_6_3_1_0()); }
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_3_1_0_1()); }
+	ruleEString{ after(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_3_1_0_1()); }
+)
+{ after(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentCrossReference_6_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__HostsAssignment_7_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeCrossReference_7_2_0()); }
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeEStringParserRuleCall_7_2_0_1()); }
+	ruleEString{ after(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeEStringParserRuleCall_7_2_0_1()); }
+)
+{ after(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeCrossReference_7_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__HostsAssignment_7_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeCrossReference_7_3_1_0()); }
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeEStringParserRuleCall_7_3_1_0_1()); }
+	ruleEString{ after(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeEStringParserRuleCall_7_3_1_0_1()); }
+)
+{ after(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeCrossReference_7_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__PerformanceAssignment_9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getPerformancePerformanceSpecificationParserRuleCall_9_0()); }
+	rulePerformanceSpecification{ after(grammarAccess.getPhysicalNodeAccess().getPerformancePerformanceSpecificationParserRuleCall_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__InterfacesAssignment_10_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getInterfacesNetworkInterfaceParserRuleCall_10_2_0()); }
+	ruleNetworkInterface{ after(grammarAccess.getPhysicalNodeAccess().getInterfacesNetworkInterfaceParserRuleCall_10_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNode__InterfacesAssignment_10_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNodeAccess().getInterfacesNetworkInterfaceParserRuleCall_10_3_1_0()); }
+	ruleNetworkInterface{ after(grammarAccess.getPhysicalNodeAccess().getInterfacesNetworkInterfaceParserRuleCall_10_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getPhysicalLinkAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getPhysicalLinkAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__ConnectsAssignment_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceCrossReference_8_0()); }
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceEStringParserRuleCall_8_0_1()); }
+	ruleEString{ after(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceEStringParserRuleCall_8_0_1()); }
+)
+{ after(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceCrossReference_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__ConnectsAssignment_9_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceCrossReference_9_1_0()); }
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceEStringParserRuleCall_9_1_0_1()); }
+	ruleEString{ after(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceEStringParserRuleCall_9_1_0_1()); }
+)
+{ after(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceCrossReference_9_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalLink__PerformanceAssignment_12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalLinkAccess().getPerformancePerformanceSpecificationParserRuleCall_12_0()); }
+	rulePerformanceSpecification{ after(grammarAccess.getPhysicalLinkAccess().getPerformancePerformanceSpecificationParserRuleCall_12_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getVirtualLinkAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getVirtualLinkAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getVirtualLinkAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getVirtualLinkAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__ConnectsAssignment_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceCrossReference_8_0()); }
+(
+{ before(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceEStringParserRuleCall_8_0_1()); }
+	ruleEString{ after(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceEStringParserRuleCall_8_0_1()); }
+)
+{ after(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceCrossReference_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__ConnectsAssignment_9_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceCrossReference_9_1_0()); }
+(
+{ before(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceEStringParserRuleCall_9_1_0_1()); }
+	ruleEString{ after(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceEStringParserRuleCall_9_1_0_1()); }
+)
+{ after(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceCrossReference_9_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualLink__PerformanceAssignment_12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualLinkAccess().getPerformancePerformanceSpecificationParserRuleCall_12_0()); }
+	rulePerformanceSpecification{ after(grammarAccess.getVirtualLinkAccess().getPerformancePerformanceSpecificationParserRuleCall_12_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__StacksAssignment_2_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getStacksProtocolStackParserRuleCall_2_2_0()); }
+	ruleProtocolStack{ after(grammarAccess.getProtocolsRepositoryAccess().getStacksProtocolStackParserRuleCall_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__StacksAssignment_2_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getStacksProtocolStackParserRuleCall_2_3_1_0()); }
+	ruleProtocolStack{ after(grammarAccess.getProtocolsRepositoryAccess().getStacksProtocolStackParserRuleCall_2_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__ProtocolsAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getProtocolsNetworkProtocolParserRuleCall_5_0()); }
+	ruleNetworkProtocol{ after(grammarAccess.getProtocolsRepositoryAccess().getProtocolsNetworkProtocolParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolsRepository__ProtocolsAssignment_6_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolsRepositoryAccess().getProtocolsNetworkProtocolParserRuleCall_6_1_0()); }
+	ruleNetworkProtocol{ after(grammarAccess.getProtocolsRepositoryAccess().getProtocolsNetworkProtocolParserRuleCall_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__RoutesAssignment_3_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRoutesRouteParserRuleCall_3_2_0()); }
+	ruleRoute{ after(grammarAccess.getRoutesRepositoryAccess().getRoutesRouteParserRuleCall_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__RoutesAssignment_3_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getRoutesRouteParserRuleCall_3_3_1_0()); }
+	ruleRoute{ after(grammarAccess.getRoutesRepositoryAccess().getRoutesRouteParserRuleCall_3_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__FlowRoutesAssignment_4_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesFlowRouteParserRuleCall_4_2_0()); }
+	ruleFlowRoute{ after(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesFlowRouteParserRuleCall_4_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__FlowRoutesAssignment_4_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesFlowRouteParserRuleCall_4_3_1_0()); }
+	ruleFlowRoute{ after(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesFlowRouteParserRuleCall_4_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__DirectionsAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getDirectionsDirectionParserRuleCall_5_2_0()); }
+	ruleDirection{ after(grammarAccess.getRoutesRepositoryAccess().getDirectionsDirectionParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RoutesRepository__DirectionsAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRoutesRepositoryAccess().getDirectionsDirectionParserRuleCall_5_3_1_0()); }
+	ruleDirection{ after(grammarAccess.getRoutesRepositoryAccess().getDirectionsDirectionParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__NameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getNameEStringParserRuleCall_1_0()); }
+	ruleEString{ after(grammarAccess.getProtocolStackAccess().getNameEStringParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__AlternativeNamesAssignment_3_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getAlternativeNamesEStringParserRuleCall_3_2_0()); }
+	ruleEString{ after(grammarAccess.getProtocolStackAccess().getAlternativeNamesEStringParserRuleCall_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__AlternativeNamesAssignment_3_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getAlternativeNamesEStringParserRuleCall_3_3_1_0()); }
+	ruleEString{ after(grammarAccess.getProtocolStackAccess().getAlternativeNamesEStringParserRuleCall_3_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__LayersAssignment_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getLayersProtocolLayerParserRuleCall_6_0()); }
+	ruleProtocolLayer{ after(grammarAccess.getProtocolStackAccess().getLayersProtocolLayerParserRuleCall_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolStack__LayersAssignment_7_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolStackAccess().getLayersProtocolLayerParserRuleCall_7_1_0()); }
+	ruleProtocolLayer{ after(grammarAccess.getProtocolStackAccess().getLayersProtocolLayerParserRuleCall_7_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__NameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getNameEStringParserRuleCall_1_0()); }
+	ruleEString{ after(grammarAccess.getProtocolLayerAccess().getNameEStringParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__AlternativeNamesAssignment_3_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getAlternativeNamesEStringParserRuleCall_3_2_0()); }
+	ruleEString{ after(grammarAccess.getProtocolLayerAccess().getAlternativeNamesEStringParserRuleCall_3_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__AlternativeNamesAssignment_3_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getAlternativeNamesEStringParserRuleCall_3_3_1_0()); }
+	ruleEString{ after(grammarAccess.getProtocolLayerAccess().getAlternativeNamesEStringParserRuleCall_3_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__ProtocolAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getProtocolNetworkProtocolCrossReference_5_0()); }
+(
+{ before(grammarAccess.getProtocolLayerAccess().getProtocolNetworkProtocolEStringParserRuleCall_5_0_1()); }
+	ruleEString{ after(grammarAccess.getProtocolLayerAccess().getProtocolNetworkProtocolEStringParserRuleCall_5_0_1()); }
+)
+{ after(grammarAccess.getProtocolLayerAccess().getProtocolNetworkProtocolCrossReference_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__IsCarriedByAssignment_6_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getIsCarriedByProtocolLayerCrossReference_6_1_0()); }
+(
+{ before(grammarAccess.getProtocolLayerAccess().getIsCarriedByProtocolLayerEStringParserRuleCall_6_1_0_1()); }
+	ruleEString{ after(grammarAccess.getProtocolLayerAccess().getIsCarriedByProtocolLayerEStringParserRuleCall_6_1_0_1()); }
+)
+{ after(grammarAccess.getProtocolLayerAccess().getIsCarriedByProtocolLayerCrossReference_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ProtocolLayer__CarriesAssignment_7_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getProtocolLayerAccess().getCarriesProtocolLayerCrossReference_7_1_0()); }
+(
+{ before(grammarAccess.getProtocolLayerAccess().getCarriesProtocolLayerEStringParserRuleCall_7_1_0_1()); }
+	ruleEString{ after(grammarAccess.getProtocolLayerAccess().getCarriesProtocolLayerEStringParserRuleCall_7_1_0_1()); }
+)
+{ after(grammarAccess.getProtocolLayerAccess().getCarriesProtocolLayerCrossReference_7_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getRouteAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getRouteAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getRouteAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getRouteAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__NumHopsAssignment_6_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getNumHopsEIntegerObjectParserRuleCall_6_1_0()); }
+	ruleEIntegerObject{ after(grammarAccess.getRouteAccess().getNumHopsEIntegerObjectParserRuleCall_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__StartAssignment_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getStartNetworkInterfaceCrossReference_8_0()); }
+(
+{ before(grammarAccess.getRouteAccess().getStartNetworkInterfaceEStringParserRuleCall_8_0_1()); }
+	ruleEString{ after(grammarAccess.getRouteAccess().getStartNetworkInterfaceEStringParserRuleCall_8_0_1()); }
+)
+{ after(grammarAccess.getRouteAccess().getStartNetworkInterfaceCrossReference_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__EndAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getEndNetworkInterfaceCrossReference_10_0()); }
+(
+{ before(grammarAccess.getRouteAccess().getEndNetworkInterfaceEStringParserRuleCall_10_0_1()); }
+	ruleEString{ after(grammarAccess.getRouteAccess().getEndNetworkInterfaceEStringParserRuleCall_10_0_1()); }
+)
+{ after(grammarAccess.getRouteAccess().getEndNetworkInterfaceCrossReference_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Route__HopsAssignment_11_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRouteAccess().getHopsHopParserRuleCall_11_1_0()); }
+	ruleHop{ after(grammarAccess.getRouteAccess().getHopsHopParserRuleCall_11_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getFlowRouteAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getFlowRouteAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getFlowRouteAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getFlowRouteAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__NumHopsAssignment_6_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getNumHopsEIntegerObjectParserRuleCall_6_1_0()); }
+	ruleEIntegerObject{ after(grammarAccess.getFlowRouteAccess().getNumHopsEIntegerObjectParserRuleCall_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__FlowAssignment_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getFlowFlowCrossReference_8_0()); }
+(
+{ before(grammarAccess.getFlowRouteAccess().getFlowFlowEStringParserRuleCall_8_0_1()); }
+	ruleEString{ after(grammarAccess.getFlowRouteAccess().getFlowFlowEStringParserRuleCall_8_0_1()); }
+)
+{ after(grammarAccess.getFlowRouteAccess().getFlowFlowCrossReference_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__StartAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getStartNetworkInterfaceCrossReference_10_0()); }
+(
+{ before(grammarAccess.getFlowRouteAccess().getStartNetworkInterfaceEStringParserRuleCall_10_0_1()); }
+	ruleEString{ after(grammarAccess.getFlowRouteAccess().getStartNetworkInterfaceEStringParserRuleCall_10_0_1()); }
+)
+{ after(grammarAccess.getFlowRouteAccess().getStartNetworkInterfaceCrossReference_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__EndAssignment_12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getEndNetworkInterfaceCrossReference_12_0()); }
+(
+{ before(grammarAccess.getFlowRouteAccess().getEndNetworkInterfaceEStringParserRuleCall_12_0_1()); }
+	ruleEString{ after(grammarAccess.getFlowRouteAccess().getEndNetworkInterfaceEStringParserRuleCall_12_0_1()); }
+)
+{ after(grammarAccess.getFlowRouteAccess().getEndNetworkInterfaceCrossReference_12_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FlowRoute__HopsAssignment_13_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFlowRouteAccess().getHopsHopParserRuleCall_13_1_0()); }
+	ruleHop{ after(grammarAccess.getFlowRouteAccess().getHopsHopParserRuleCall_13_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__IsDefaultAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getIsDefaultIsDefaultKeyword_0_0()); }
+(
+{ before(grammarAccess.getDirectionAccess().getIsDefaultIsDefaultKeyword_0_0()); }
+
+	'isDefault' 
+
+{ after(grammarAccess.getDirectionAccess().getIsDefaultIsDefaultKeyword_0_0()); }
+)
+
+{ after(grammarAccess.getDirectionAccess().getIsDefaultIsDefaultKeyword_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__IdAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getIdIDTerminalRuleCall_2_0()); }
+	RULE_ID{ after(grammarAccess.getDirectionAccess().getIdIDTerminalRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__NameAssignment_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getNameEStringParserRuleCall_5_0()); }
+	ruleEString{ after(grammarAccess.getDirectionAccess().getNameEStringParserRuleCall_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__AlternativeNamesAssignment_6_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getAlternativeNamesEStringParserRuleCall_6_2_0()); }
+	ruleEString{ after(grammarAccess.getDirectionAccess().getAlternativeNamesEStringParserRuleCall_6_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__AlternativeNamesAssignment_6_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getAlternativeNamesEStringParserRuleCall_6_3_1_0()); }
+	ruleEString{ after(grammarAccess.getDirectionAccess().getAlternativeNamesEStringParserRuleCall_6_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__DistanceAssignment_7_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getDistanceELongParserRuleCall_7_1_0()); }
+	ruleELong{ after(grammarAccess.getDirectionAccess().getDistanceELongParserRuleCall_7_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__OnNodeAssignment_9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getOnNodeNodeCrossReference_9_0()); }
+(
+{ before(grammarAccess.getDirectionAccess().getOnNodeNodeEStringParserRuleCall_9_0_1()); }
+	ruleEString{ after(grammarAccess.getDirectionAccess().getOnNodeNodeEStringParserRuleCall_9_0_1()); }
+)
+{ after(grammarAccess.getDirectionAccess().getOnNodeNodeCrossReference_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__FlowAssignment_10_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getFlowFlowCrossReference_10_1_0()); }
+(
+{ before(grammarAccess.getDirectionAccess().getFlowFlowEStringParserRuleCall_10_1_0_1()); }
+	ruleEString{ after(grammarAccess.getDirectionAccess().getFlowFlowEStringParserRuleCall_10_1_0_1()); }
+)
+{ after(grammarAccess.getDirectionAccess().getFlowFlowCrossReference_10_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Direction__ViaAssignment_12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDirectionAccess().getViaNetworkInterfaceCrossReference_12_0()); }
+(
+{ before(grammarAccess.getDirectionAccess().getViaNetworkInterfaceEStringParserRuleCall_12_0_1()); }
+	ruleEString{ after(grammarAccess.getDirectionAccess().getViaNetworkInterfaceEStringParserRuleCall_12_0_1()); }
+)
+{ after(grammarAccess.getDirectionAccess().getViaNetworkInterfaceCrossReference_12_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__InterfacerefAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getInterfacerefNetworkInterfaceCrossReference_3_0()); }
+(
+{ before(grammarAccess.getHopAccess().getInterfacerefNetworkInterfaceEStringParserRuleCall_3_0_1()); }
+	ruleEString{ after(grammarAccess.getHopAccess().getInterfacerefNetworkInterfaceEStringParserRuleCall_3_0_1()); }
+)
+{ after(grammarAccess.getHopAccess().getInterfacerefNetworkInterfaceCrossReference_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Hop__NextHopAssignment_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getHopAccess().getNextHopHopParserRuleCall_4_1_0()); }
+	ruleHop{ after(grammarAccess.getHopAccess().getNextHopHopParserRuleCall_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackProtocolStackCrossReference_7_0()); }
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackProtocolStackEStringParserRuleCall_7_0_1()); }
+	ruleEString{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackProtocolStackEStringParserRuleCall_7_0_1()); }
+)
+{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackProtocolStackCrossReference_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__AddressesAssignment_8_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_2_0()); }
+	ruleEntityAddress{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__AddressesAssignment_8_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_3_1_0()); }
+	ruleEntityAddress{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__PhysicalNetworkInterface__PerformanceAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getPhysicalNetworkInterfaceAccess().getPerformancePhysicalNetworkInterfacePerfSpecParserRuleCall_10_0()); }
+	rulePhysicalNetworkInterfacePerfSpec{ after(grammarAccess.getPhysicalNetworkInterfaceAccess().getPerformancePhysicalNetworkInterfacePerfSpecParserRuleCall_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__IdAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getIdIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getIdIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__NameAssignment_4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getNameEStringParserRuleCall_4_0()); }
+	ruleEString{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getNameEStringParserRuleCall_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+	ruleEString{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+	ruleEString{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__UsedProtocolStackAssignment_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackProtocolStackCrossReference_7_0()); }
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackProtocolStackEStringParserRuleCall_7_0_1()); }
+	ruleEString{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackProtocolStackEStringParserRuleCall_7_0_1()); }
+)
+{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackProtocolStackCrossReference_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__AddressesAssignment_8_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_2_0()); }
+	ruleEntityAddress{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__AddressesAssignment_8_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_3_1_0()); }
+	ruleEntityAddress{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VirtualNetworkInterface__PerformanceAssignment_10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVirtualNetworkInterfaceAccess().getPerformancePerformanceSpecificationParserRuleCall_10_0()); }
+	rulePerformanceSpecification{ after(grammarAccess.getVirtualNetworkInterfaceAccess().getPerformancePerformanceSpecificationParserRuleCall_10_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
+
+RULE_INT : ('0'..'9')+;
+
+RULE_STRING : ('"' ('\\' .|~(('\\'|'"')))* '"'|'\'' ('\\' .|~(('\\'|'\'')))* '\'');
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.tokens b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.tokens
new file mode 100644
index 00000000..cf115ed6
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.tokens
@@ -0,0 +1,309 @@
+'('=123
+')'=124
+','=31
+'-'=87
+'.'=99
+'BranchAction'=109
+'BytesPerSec'=19
+'ConstantDoubleVariable'=88
+'ConstantLongVariable'=90
+'ContinuousFunction'=93
+'DataPlanePerfSpec'=45
+'DataSeries'=102
+'Direction'=149
+'DiscreteFunction'=96
+'E'=13
+'EndNodePerfSpec'=51
+'EntityAddress'=69
+'ExperimentParam'=62
+'FlowRoute'=148
+'G'=18
+'GenericFlow'=80
+'GenericWorkload'=107
+'Hop'=153
+'IntermediateNodePerfSpec'=42
+'K'=16
+'LoopAction'=111
+'M'=17
+'MTU'=35
+'NetworkConfiguration'=59
+'NetworkInfrastructure'=22
+'NetworkProtocol'=82
+'NetworkStructure'=56
+'NetworkTraffic'=53
+'OFFstateDuration'=75
+'ONOFFFlow'=72
+'ONstateDuration'=74
+'ONstateIAT'=73
+'PhysicalLink'=128
+'PhysicalLinkPerfSpec'=41
+'PhysicalNetworkInterface'=156
+'PhysicalNetworkInterfacePerfSpec'=37
+'PhysicalNode'=126
+'ProtocolLayer'=139
+'ProtocolStack'=137
+'ProtocolsRepository'=131
+'RandomVariable'=91
+'Route'=143
+'RoutesRepository'=134
+'SequenceAction'=113
+'SoftwareComponent'=64
+'SpeedUnit'=100
+'StartAction'=114
+'StopAction'=115
+'TrafficSource'=104
+'TransmitAction'=116
+'VirtualLink'=130
+'VirtualLinkPerfSpec'=38
+'VirtualNetworkInterface'=158
+'VirtualNetworkInterfacePerfSpec'=32
+'VirtualNode'=120
+'WaitAction'=118
+'actions'=108
+'address'=70
+'addressGivenBy'=71
+'addresses'=106
+'alternativeNames'=67
+'bitsPerSec'=20
+'carries'=142
+'cdf'=92
+'configuration'=28
+'connectionless'=86
+'connects'=129
+'controlplane'=44
+'data'=103
+'dataCenterAltName'=25
+'dataCenterName'=24
+'dataSize'=81
+'dataUnitLength'=85
+'dataplane'=43
+'deliveryGuaranteed'=160
+'deployedOn'=66
+'destinationAddresses'=79
+'destinationSoftwareComponent'=77
+'directions'=136
+'distance'=152
+'e'=14
+'end'=145
+'equation'=95
+'false'=12
+'flow'=117
+'flowRoutes'=135
+'flows'=54
+'forwardingBandwidthBPS'=50
+'forwardingBandwidthPPS'=49
+'forwardingLatency'=48
+'headersLength'=84
+'hops'=147
+'hostedOn'=121
+'hosts'=127
+'interfaceSpeed'=36
+'interfaceref'=154
+'interfaces'=125
+'intern'=110
+'isCarriedBy'=141
+'isDefault'=161
+'isUp'=33
+'layers'=138
+'links'=58
+'maxSupportedBandwidth'=40
+'mtu'=83
+'name'=65
+'nextHop'=155
+'nodes'=57
+'none'=15
+'numArgs'=94
+'numHops'=146
+'numIterations'=112
+'onNode'=150
+'packetLength'=76
+'packetProcessingTime'=34
+'packetsPerSec'=21
+'params'=30
+'performance'=122
+'prefix'=101
+'processingBandwidthReqPS'=47
+'processingLatency'=46
+'propagationDelay'=39
+'protocol'=140
+'protocols'=132
+'protocolsAndStacks'=60
+'routes'=61
+'software'=55
+'softwareLayersDelay'=52
+'sourceSoftwareComponent'=78
+'stacks'=133
+'start'=144
+'startState'=159
+'structure'=27
+'traffic'=26
+'trafficSources'=68
+'true'=11
+'unit'=89
+'usedProtocolStack'=157
+'value'=63
+'via'=151
+'waitTime'=119
+'workload'=105
+'x'=97
+'y'=98
+'{'=23
+'}'=29
+RULE_ANY_OTHER=10
+RULE_ID=5
+RULE_INT=6
+RULE_ML_COMMENT=7
+RULE_SL_COMMENT=8
+RULE_STRING=4
+RULE_WS=9
+T__100=100
+T__101=101
+T__102=102
+T__103=103
+T__104=104
+T__105=105
+T__106=106
+T__107=107
+T__108=108
+T__109=109
+T__110=110
+T__111=111
+T__112=112
+T__113=113
+T__114=114
+T__115=115
+T__116=116
+T__117=117
+T__118=118
+T__119=119
+T__11=11
+T__120=120
+T__121=121
+T__122=122
+T__123=123
+T__124=124
+T__125=125
+T__126=126
+T__127=127
+T__128=128
+T__129=129
+T__12=12
+T__130=130
+T__131=131
+T__132=132
+T__133=133
+T__134=134
+T__135=135
+T__136=136
+T__137=137
+T__138=138
+T__139=139
+T__13=13
+T__140=140
+T__141=141
+T__142=142
+T__143=143
+T__144=144
+T__145=145
+T__146=146
+T__147=147
+T__148=148
+T__149=149
+T__14=14
+T__150=150
+T__151=151
+T__152=152
+T__153=153
+T__154=154
+T__155=155
+T__156=156
+T__157=157
+T__158=158
+T__159=159
+T__15=15
+T__160=160
+T__161=161
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextLexer.java b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextLexer.java
new file mode 100644
index 00000000..2d5cfe51
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextLexer.java
@@ -0,0 +1,6523 @@
+package tools.descatres.dml.dni.text.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalDNITextLexer extends Lexer {
+    public static final int RULE_ID=5;
+    public static final int T__29=29;
+    public static final int T__28=28;
+    public static final int T__159=159;
+    public static final int T__27=27;
+    public static final int T__158=158;
+    public static final int T__26=26;
+    public static final int T__25=25;
+    public static final int T__24=24;
+    public static final int T__23=23;
+    public static final int T__22=22;
+    public static final int RULE_ANY_OTHER=10;
+    public static final int T__21=21;
+    public static final int T__20=20;
+    public static final int T__160=160;
+    public static final int EOF=-1;
+    public static final int T__161=161;
+    public static final int T__93=93;
+    public static final int T__94=94;
+    public static final int T__19=19;
+    public static final int T__91=91;
+    public static final int T__92=92;
+    public static final int T__16=16;
+    public static final int T__148=148;
+    public static final int T__90=90;
+    public static final int T__15=15;
+    public static final int T__147=147;
+    public static final int T__18=18;
+    public static final int T__17=17;
+    public static final int T__149=149;
+    public static final int T__12=12;
+    public static final int T__11=11;
+    public static final int T__14=14;
+    public static final int T__13=13;
+    public static final int T__154=154;
+    public static final int T__155=155;
+    public static final int T__156=156;
+    public static final int T__99=99;
+    public static final int T__157=157;
+    public static final int T__150=150;
+    public static final int T__98=98;
+    public static final int T__151=151;
+    public static final int T__97=97;
+    public static final int T__152=152;
+    public static final int T__96=96;
+    public static final int T__153=153;
+    public static final int T__95=95;
+    public static final int T__139=139;
+    public static final int T__138=138;
+    public static final int T__137=137;
+    public static final int T__136=136;
+    public static final int T__80=80;
+    public static final int T__81=81;
+    public static final int T__82=82;
+    public static final int T__83=83;
+    public static final int T__141=141;
+    public static final int T__85=85;
+    public static final int T__142=142;
+    public static final int T__84=84;
+    public static final int T__87=87;
+    public static final int T__140=140;
+    public static final int T__86=86;
+    public static final int T__145=145;
+    public static final int T__89=89;
+    public static final int T__146=146;
+    public static final int T__88=88;
+    public static final int RULE_ML_COMMENT=7;
+    public static final int T__143=143;
+    public static final int T__144=144;
+    public static final int T__126=126;
+    public static final int T__125=125;
+    public static final int T__128=128;
+    public static final int RULE_STRING=4;
+    public static final int T__127=127;
+    public static final int T__71=71;
+    public static final int T__129=129;
+    public static final int T__72=72;
+    public static final int T__70=70;
+    public static final int T__76=76;
+    public static final int T__75=75;
+    public static final int T__130=130;
+    public static final int T__74=74;
+    public static final int T__131=131;
+    public static final int T__73=73;
+    public static final int T__132=132;
+    public static final int T__133=133;
+    public static final int T__79=79;
+    public static final int T__78=78;
+    public static final int T__134=134;
+    public static final int T__77=77;
+    public static final int T__135=135;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__66=66;
+    public static final int T__67=67;
+    public static final int T__64=64;
+    public static final int T__65=65;
+    public static final int T__62=62;
+    public static final int T__63=63;
+    public static final int T__118=118;
+    public static final int T__119=119;
+    public static final int T__116=116;
+    public static final int T__117=117;
+    public static final int T__114=114;
+    public static final int T__115=115;
+    public static final int T__124=124;
+    public static final int T__123=123;
+    public static final int T__122=122;
+    public static final int T__121=121;
+    public static final int T__120=120;
+    public static final int T__61=61;
+    public static final int T__60=60;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__52=52;
+    public static final int T__53=53;
+    public static final int T__54=54;
+    public static final int T__107=107;
+    public static final int T__108=108;
+    public static final int T__109=109;
+    public static final int T__59=59;
+    public static final int T__103=103;
+    public static final int T__104=104;
+    public static final int T__105=105;
+    public static final int T__106=106;
+    public static final int T__111=111;
+    public static final int T__110=110;
+    public static final int T__113=113;
+    public static final int RULE_INT=6;
+    public static final int T__112=112;
+    public static final int T__50=50;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__102=102;
+    public static final int T__101=101;
+    public static final int T__100=100;
+    public static final int RULE_SL_COMMENT=8;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int RULE_WS=9;
+
+    // delegates
+    // delegators
+
+    public InternalDNITextLexer() {;} 
+    public InternalDNITextLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalDNITextLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g"; }
+
+    // $ANTLR start "T__11"
+    public final void mT__11() throws RecognitionException {
+        try {
+            int _type = T__11;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11:7: ( 'true' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11:9: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__11"
+
+    // $ANTLR start "T__12"
+    public final void mT__12() throws RecognitionException {
+        try {
+            int _type = T__12;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12:7: ( 'false' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12:9: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__12"
+
+    // $ANTLR start "T__13"
+    public final void mT__13() throws RecognitionException {
+        try {
+            int _type = T__13;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13:7: ( 'E' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13:9: 'E'
+            {
+            match('E'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__13"
+
+    // $ANTLR start "T__14"
+    public final void mT__14() throws RecognitionException {
+        try {
+            int _type = T__14;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14:7: ( 'e' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14:9: 'e'
+            {
+            match('e'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__14"
+
+    // $ANTLR start "T__15"
+    public final void mT__15() throws RecognitionException {
+        try {
+            int _type = T__15;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15:7: ( 'none' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15:9: 'none'
+            {
+            match("none"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__15"
+
+    // $ANTLR start "T__16"
+    public final void mT__16() throws RecognitionException {
+        try {
+            int _type = T__16;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16:7: ( 'K' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16:9: 'K'
+            {
+            match('K'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__16"
+
+    // $ANTLR start "T__17"
+    public final void mT__17() throws RecognitionException {
+        try {
+            int _type = T__17;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17:7: ( 'M' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17:9: 'M'
+            {
+            match('M'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__17"
+
+    // $ANTLR start "T__18"
+    public final void mT__18() throws RecognitionException {
+        try {
+            int _type = T__18;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18:7: ( 'G' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18:9: 'G'
+            {
+            match('G'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__18"
+
+    // $ANTLR start "T__19"
+    public final void mT__19() throws RecognitionException {
+        try {
+            int _type = T__19;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19:7: ( 'BytesPerSec' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19:9: 'BytesPerSec'
+            {
+            match("BytesPerSec"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__19"
+
+    // $ANTLR start "T__20"
+    public final void mT__20() throws RecognitionException {
+        try {
+            int _type = T__20;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20:7: ( 'bitsPerSec' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20:9: 'bitsPerSec'
+            {
+            match("bitsPerSec"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__20"
+
+    // $ANTLR start "T__21"
+    public final void mT__21() throws RecognitionException {
+        try {
+            int _type = T__21;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21:7: ( 'packetsPerSec' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21:9: 'packetsPerSec'
+            {
+            match("packetsPerSec"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__21"
+
+    // $ANTLR start "T__22"
+    public final void mT__22() throws RecognitionException {
+        try {
+            int _type = T__22;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22:7: ( 'NetworkInfrastructure' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22:9: 'NetworkInfrastructure'
+            {
+            match("NetworkInfrastructure"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__22"
+
+    // $ANTLR start "T__23"
+    public final void mT__23() throws RecognitionException {
+        try {
+            int _type = T__23;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23:7: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__23"
+
+    // $ANTLR start "T__24"
+    public final void mT__24() throws RecognitionException {
+        try {
+            int _type = T__24;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24:7: ( 'dataCenterName' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24:9: 'dataCenterName'
+            {
+            match("dataCenterName"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__24"
+
+    // $ANTLR start "T__25"
+    public final void mT__25() throws RecognitionException {
+        try {
+            int _type = T__25;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25:7: ( 'dataCenterAltName' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25:9: 'dataCenterAltName'
+            {
+            match("dataCenterAltName"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__25"
+
+    // $ANTLR start "T__26"
+    public final void mT__26() throws RecognitionException {
+        try {
+            int _type = T__26;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26:7: ( 'traffic' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26:9: 'traffic'
+            {
+            match("traffic"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__26"
+
+    // $ANTLR start "T__27"
+    public final void mT__27() throws RecognitionException {
+        try {
+            int _type = T__27;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27:7: ( 'structure' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27:9: 'structure'
+            {
+            match("structure"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__27"
+
+    // $ANTLR start "T__28"
+    public final void mT__28() throws RecognitionException {
+        try {
+            int _type = T__28;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28:7: ( 'configuration' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28:9: 'configuration'
+            {
+            match("configuration"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__28"
+
+    // $ANTLR start "T__29"
+    public final void mT__29() throws RecognitionException {
+        try {
+            int _type = T__29;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29:7: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__29"
+
+    // $ANTLR start "T__30"
+    public final void mT__30() throws RecognitionException {
+        try {
+            int _type = T__30;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30:7: ( 'params' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30:9: 'params'
+            {
+            match("params"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__30"
+
+    // $ANTLR start "T__31"
+    public final void mT__31() throws RecognitionException {
+        try {
+            int _type = T__31;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31:7: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31:9: ','
+            {
+            match(','); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__31"
+
+    // $ANTLR start "T__32"
+    public final void mT__32() throws RecognitionException {
+        try {
+            int _type = T__32;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:32:7: ( 'VirtualNetworkInterfacePerfSpec' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:32:9: 'VirtualNetworkInterfacePerfSpec'
+            {
+            match("VirtualNetworkInterfacePerfSpec"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__32"
+
+    // $ANTLR start "T__33"
+    public final void mT__33() throws RecognitionException {
+        try {
+            int _type = T__33;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:33:7: ( 'isUp' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:33:9: 'isUp'
+            {
+            match("isUp"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__33"
+
+    // $ANTLR start "T__34"
+    public final void mT__34() throws RecognitionException {
+        try {
+            int _type = T__34;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:34:7: ( 'packetProcessingTime' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:34:9: 'packetProcessingTime'
+            {
+            match("packetProcessingTime"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__34"
+
+    // $ANTLR start "T__35"
+    public final void mT__35() throws RecognitionException {
+        try {
+            int _type = T__35;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:35:7: ( 'MTU' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:35:9: 'MTU'
+            {
+            match("MTU"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__35"
+
+    // $ANTLR start "T__36"
+    public final void mT__36() throws RecognitionException {
+        try {
+            int _type = T__36;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:36:7: ( 'interfaceSpeed' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:36:9: 'interfaceSpeed'
+            {
+            match("interfaceSpeed"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__36"
+
+    // $ANTLR start "T__37"
+    public final void mT__37() throws RecognitionException {
+        try {
+            int _type = T__37;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:37:7: ( 'PhysicalNetworkInterfacePerfSpec' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:37:9: 'PhysicalNetworkInterfacePerfSpec'
+            {
+            match("PhysicalNetworkInterfacePerfSpec"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__37"
+
+    // $ANTLR start "T__38"
+    public final void mT__38() throws RecognitionException {
+        try {
+            int _type = T__38;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:38:7: ( 'VirtualLinkPerfSpec' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:38:9: 'VirtualLinkPerfSpec'
+            {
+            match("VirtualLinkPerfSpec"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__38"
+
+    // $ANTLR start "T__39"
+    public final void mT__39() throws RecognitionException {
+        try {
+            int _type = T__39;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:39:7: ( 'propagationDelay' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:39:9: 'propagationDelay'
+            {
+            match("propagationDelay"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__39"
+
+    // $ANTLR start "T__40"
+    public final void mT__40() throws RecognitionException {
+        try {
+            int _type = T__40;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:40:7: ( 'maxSupportedBandwidth' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:40:9: 'maxSupportedBandwidth'
+            {
+            match("maxSupportedBandwidth"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__40"
+
+    // $ANTLR start "T__41"
+    public final void mT__41() throws RecognitionException {
+        try {
+            int _type = T__41;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:41:7: ( 'PhysicalLinkPerfSpec' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:41:9: 'PhysicalLinkPerfSpec'
+            {
+            match("PhysicalLinkPerfSpec"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__41"
+
+    // $ANTLR start "T__42"
+    public final void mT__42() throws RecognitionException {
+        try {
+            int _type = T__42;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:42:7: ( 'IntermediateNodePerfSpec' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:42:9: 'IntermediateNodePerfSpec'
+            {
+            match("IntermediateNodePerfSpec"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__42"
+
+    // $ANTLR start "T__43"
+    public final void mT__43() throws RecognitionException {
+        try {
+            int _type = T__43;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:43:7: ( 'dataplane' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:43:9: 'dataplane'
+            {
+            match("dataplane"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__43"
+
+    // $ANTLR start "T__44"
+    public final void mT__44() throws RecognitionException {
+        try {
+            int _type = T__44;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:44:7: ( 'controlplane' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:44:9: 'controlplane'
+            {
+            match("controlplane"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__44"
+
+    // $ANTLR start "T__45"
+    public final void mT__45() throws RecognitionException {
+        try {
+            int _type = T__45;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:45:7: ( 'DataPlanePerfSpec' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:45:9: 'DataPlanePerfSpec'
+            {
+            match("DataPlanePerfSpec"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__45"
+
+    // $ANTLR start "T__46"
+    public final void mT__46() throws RecognitionException {
+        try {
+            int _type = T__46;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:46:7: ( 'processingLatency' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:46:9: 'processingLatency'
+            {
+            match("processingLatency"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__46"
+
+    // $ANTLR start "T__47"
+    public final void mT__47() throws RecognitionException {
+        try {
+            int _type = T__47;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:47:7: ( 'processingBandwidthReqPS' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:47:9: 'processingBandwidthReqPS'
+            {
+            match("processingBandwidthReqPS"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__47"
+
+    // $ANTLR start "T__48"
+    public final void mT__48() throws RecognitionException {
+        try {
+            int _type = T__48;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:48:7: ( 'forwardingLatency' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:48:9: 'forwardingLatency'
+            {
+            match("forwardingLatency"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__48"
+
+    // $ANTLR start "T__49"
+    public final void mT__49() throws RecognitionException {
+        try {
+            int _type = T__49;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:49:7: ( 'forwardingBandwidthPPS' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:49:9: 'forwardingBandwidthPPS'
+            {
+            match("forwardingBandwidthPPS"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__49"
+
+    // $ANTLR start "T__50"
+    public final void mT__50() throws RecognitionException {
+        try {
+            int _type = T__50;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:50:7: ( 'forwardingBandwidthBPS' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:50:9: 'forwardingBandwidthBPS'
+            {
+            match("forwardingBandwidthBPS"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__50"
+
+    // $ANTLR start "T__51"
+    public final void mT__51() throws RecognitionException {
+        try {
+            int _type = T__51;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:51:7: ( 'EndNodePerfSpec' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:51:9: 'EndNodePerfSpec'
+            {
+            match("EndNodePerfSpec"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__51"
+
+    // $ANTLR start "T__52"
+    public final void mT__52() throws RecognitionException {
+        try {
+            int _type = T__52;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:52:7: ( 'softwareLayersDelay' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:52:9: 'softwareLayersDelay'
+            {
+            match("softwareLayersDelay"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__52"
+
+    // $ANTLR start "T__53"
+    public final void mT__53() throws RecognitionException {
+        try {
+            int _type = T__53;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:53:7: ( 'NetworkTraffic' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:53:9: 'NetworkTraffic'
+            {
+            match("NetworkTraffic"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__53"
+
+    // $ANTLR start "T__54"
+    public final void mT__54() throws RecognitionException {
+        try {
+            int _type = T__54;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:54:7: ( 'flows' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:54:9: 'flows'
+            {
+            match("flows"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__54"
+
+    // $ANTLR start "T__55"
+    public final void mT__55() throws RecognitionException {
+        try {
+            int _type = T__55;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:55:7: ( 'software' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:55:9: 'software'
+            {
+            match("software"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__55"
+
+    // $ANTLR start "T__56"
+    public final void mT__56() throws RecognitionException {
+        try {
+            int _type = T__56;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:56:7: ( 'NetworkStructure' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:56:9: 'NetworkStructure'
+            {
+            match("NetworkStructure"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__56"
+
+    // $ANTLR start "T__57"
+    public final void mT__57() throws RecognitionException {
+        try {
+            int _type = T__57;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:57:7: ( 'nodes' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:57:9: 'nodes'
+            {
+            match("nodes"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__57"
+
+    // $ANTLR start "T__58"
+    public final void mT__58() throws RecognitionException {
+        try {
+            int _type = T__58;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:58:7: ( 'links' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:58:9: 'links'
+            {
+            match("links"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__58"
+
+    // $ANTLR start "T__59"
+    public final void mT__59() throws RecognitionException {
+        try {
+            int _type = T__59;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:59:7: ( 'NetworkConfiguration' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:59:9: 'NetworkConfiguration'
+            {
+            match("NetworkConfiguration"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__59"
+
+    // $ANTLR start "T__60"
+    public final void mT__60() throws RecognitionException {
+        try {
+            int _type = T__60;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:60:7: ( 'protocolsAndStacks' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:60:9: 'protocolsAndStacks'
+            {
+            match("protocolsAndStacks"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__60"
+
+    // $ANTLR start "T__61"
+    public final void mT__61() throws RecognitionException {
+        try {
+            int _type = T__61;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:61:7: ( 'routes' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:61:9: 'routes'
+            {
+            match("routes"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__61"
+
+    // $ANTLR start "T__62"
+    public final void mT__62() throws RecognitionException {
+        try {
+            int _type = T__62;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:62:7: ( 'ExperimentParam' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:62:9: 'ExperimentParam'
+            {
+            match("ExperimentParam"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__62"
+
+    // $ANTLR start "T__63"
+    public final void mT__63() throws RecognitionException {
+        try {
+            int _type = T__63;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:63:7: ( 'value' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:63:9: 'value'
+            {
+            match("value"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__63"
+
+    // $ANTLR start "T__64"
+    public final void mT__64() throws RecognitionException {
+        try {
+            int _type = T__64;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:64:7: ( 'SoftwareComponent' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:64:9: 'SoftwareComponent'
+            {
+            match("SoftwareComponent"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__64"
+
+    // $ANTLR start "T__65"
+    public final void mT__65() throws RecognitionException {
+        try {
+            int _type = T__65;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:65:7: ( 'name' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:65:9: 'name'
+            {
+            match("name"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__65"
+
+    // $ANTLR start "T__66"
+    public final void mT__66() throws RecognitionException {
+        try {
+            int _type = T__66;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:66:7: ( 'deployedOn' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:66:9: 'deployedOn'
+            {
+            match("deployedOn"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__66"
+
+    // $ANTLR start "T__67"
+    public final void mT__67() throws RecognitionException {
+        try {
+            int _type = T__67;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:67:7: ( 'alternativeNames' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:67:9: 'alternativeNames'
+            {
+            match("alternativeNames"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__67"
+
+    // $ANTLR start "T__68"
+    public final void mT__68() throws RecognitionException {
+        try {
+            int _type = T__68;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:68:7: ( 'trafficSources' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:68:9: 'trafficSources'
+            {
+            match("trafficSources"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__68"
+
+    // $ANTLR start "T__69"
+    public final void mT__69() throws RecognitionException {
+        try {
+            int _type = T__69;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:69:7: ( 'EntityAddress' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:69:9: 'EntityAddress'
+            {
+            match("EntityAddress"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__69"
+
+    // $ANTLR start "T__70"
+    public final void mT__70() throws RecognitionException {
+        try {
+            int _type = T__70;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:70:7: ( 'address' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:70:9: 'address'
+            {
+            match("address"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__70"
+
+    // $ANTLR start "T__71"
+    public final void mT__71() throws RecognitionException {
+        try {
+            int _type = T__71;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:71:7: ( 'addressGivenBy' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:71:9: 'addressGivenBy'
+            {
+            match("addressGivenBy"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__71"
+
+    // $ANTLR start "T__72"
+    public final void mT__72() throws RecognitionException {
+        try {
+            int _type = T__72;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:72:7: ( 'ONOFFFlow' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:72:9: 'ONOFFFlow'
+            {
+            match("ONOFFFlow"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__72"
+
+    // $ANTLR start "T__73"
+    public final void mT__73() throws RecognitionException {
+        try {
+            int _type = T__73;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:73:7: ( 'ONstateIAT' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:73:9: 'ONstateIAT'
+            {
+            match("ONstateIAT"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__73"
+
+    // $ANTLR start "T__74"
+    public final void mT__74() throws RecognitionException {
+        try {
+            int _type = T__74;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:74:7: ( 'ONstateDuration' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:74:9: 'ONstateDuration'
+            {
+            match("ONstateDuration"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__74"
+
+    // $ANTLR start "T__75"
+    public final void mT__75() throws RecognitionException {
+        try {
+            int _type = T__75;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:75:7: ( 'OFFstateDuration' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:75:9: 'OFFstateDuration'
+            {
+            match("OFFstateDuration"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__75"
+
+    // $ANTLR start "T__76"
+    public final void mT__76() throws RecognitionException {
+        try {
+            int _type = T__76;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:76:7: ( 'packetLength' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:76:9: 'packetLength'
+            {
+            match("packetLength"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__76"
+
+    // $ANTLR start "T__77"
+    public final void mT__77() throws RecognitionException {
+        try {
+            int _type = T__77;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:77:7: ( 'destinationSoftwareComponent' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:77:9: 'destinationSoftwareComponent'
+            {
+            match("destinationSoftwareComponent"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__77"
+
+    // $ANTLR start "T__78"
+    public final void mT__78() throws RecognitionException {
+        try {
+            int _type = T__78;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:78:7: ( 'sourceSoftwareComponent' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:78:9: 'sourceSoftwareComponent'
+            {
+            match("sourceSoftwareComponent"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__78"
+
+    // $ANTLR start "T__79"
+    public final void mT__79() throws RecognitionException {
+        try {
+            int _type = T__79;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:79:7: ( 'destinationAddresses' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:79:9: 'destinationAddresses'
+            {
+            match("destinationAddresses"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__79"
+
+    // $ANTLR start "T__80"
+    public final void mT__80() throws RecognitionException {
+        try {
+            int _type = T__80;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:80:7: ( 'GenericFlow' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:80:9: 'GenericFlow'
+            {
+            match("GenericFlow"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__80"
+
+    // $ANTLR start "T__81"
+    public final void mT__81() throws RecognitionException {
+        try {
+            int _type = T__81;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:81:7: ( 'dataSize' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:81:9: 'dataSize'
+            {
+            match("dataSize"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__81"
+
+    // $ANTLR start "T__82"
+    public final void mT__82() throws RecognitionException {
+        try {
+            int _type = T__82;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:82:7: ( 'NetworkProtocol' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:82:9: 'NetworkProtocol'
+            {
+            match("NetworkProtocol"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__82"
+
+    // $ANTLR start "T__83"
+    public final void mT__83() throws RecognitionException {
+        try {
+            int _type = T__83;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:83:7: ( 'mtu' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:83:9: 'mtu'
+            {
+            match("mtu"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__83"
+
+    // $ANTLR start "T__84"
+    public final void mT__84() throws RecognitionException {
+        try {
+            int _type = T__84;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:84:7: ( 'headersLength' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:84:9: 'headersLength'
+            {
+            match("headersLength"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__84"
+
+    // $ANTLR start "T__85"
+    public final void mT__85() throws RecognitionException {
+        try {
+            int _type = T__85;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:85:7: ( 'dataUnitLength' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:85:9: 'dataUnitLength'
+            {
+            match("dataUnitLength"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__85"
+
+    // $ANTLR start "T__86"
+    public final void mT__86() throws RecognitionException {
+        try {
+            int _type = T__86;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:86:7: ( 'connectionless' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:86:9: 'connectionless'
+            {
+            match("connectionless"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__86"
+
+    // $ANTLR start "T__87"
+    public final void mT__87() throws RecognitionException {
+        try {
+            int _type = T__87;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:87:7: ( '-' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:87:9: '-'
+            {
+            match('-'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__87"
+
+    // $ANTLR start "T__88"
+    public final void mT__88() throws RecognitionException {
+        try {
+            int _type = T__88;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:88:7: ( 'ConstantDoubleVariable' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:88:9: 'ConstantDoubleVariable'
+            {
+            match("ConstantDoubleVariable"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__88"
+
+    // $ANTLR start "T__89"
+    public final void mT__89() throws RecognitionException {
+        try {
+            int _type = T__89;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:89:7: ( 'unit' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:89:9: 'unit'
+            {
+            match("unit"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__89"
+
+    // $ANTLR start "T__90"
+    public final void mT__90() throws RecognitionException {
+        try {
+            int _type = T__90;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:90:7: ( 'ConstantLongVariable' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:90:9: 'ConstantLongVariable'
+            {
+            match("ConstantLongVariable"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__90"
+
+    // $ANTLR start "T__91"
+    public final void mT__91() throws RecognitionException {
+        try {
+            int _type = T__91;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:91:7: ( 'RandomVariable' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:91:9: 'RandomVariable'
+            {
+            match("RandomVariable"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__91"
+
+    // $ANTLR start "T__92"
+    public final void mT__92() throws RecognitionException {
+        try {
+            int _type = T__92;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:92:7: ( 'cdf' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:92:9: 'cdf'
+            {
+            match("cdf"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__92"
+
+    // $ANTLR start "T__93"
+    public final void mT__93() throws RecognitionException {
+        try {
+            int _type = T__93;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:93:7: ( 'ContinuousFunction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:93:9: 'ContinuousFunction'
+            {
+            match("ContinuousFunction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__93"
+
+    // $ANTLR start "T__94"
+    public final void mT__94() throws RecognitionException {
+        try {
+            int _type = T__94;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:94:7: ( 'numArgs' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:94:9: 'numArgs'
+            {
+            match("numArgs"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__94"
+
+    // $ANTLR start "T__95"
+    public final void mT__95() throws RecognitionException {
+        try {
+            int _type = T__95;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:95:7: ( 'equation' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:95:9: 'equation'
+            {
+            match("equation"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__95"
+
+    // $ANTLR start "T__96"
+    public final void mT__96() throws RecognitionException {
+        try {
+            int _type = T__96;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:96:7: ( 'DiscreteFunction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:96:9: 'DiscreteFunction'
+            {
+            match("DiscreteFunction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__96"
+
+    // $ANTLR start "T__97"
+    public final void mT__97() throws RecognitionException {
+        try {
+            int _type = T__97;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:97:7: ( 'x' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:97:9: 'x'
+            {
+            match('x'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__97"
+
+    // $ANTLR start "T__98"
+    public final void mT__98() throws RecognitionException {
+        try {
+            int _type = T__98;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:98:7: ( 'y' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:98:9: 'y'
+            {
+            match('y'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__98"
+
+    // $ANTLR start "T__99"
+    public final void mT__99() throws RecognitionException {
+        try {
+            int _type = T__99;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:99:7: ( '.' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:99:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__99"
+
+    // $ANTLR start "T__100"
+    public final void mT__100() throws RecognitionException {
+        try {
+            int _type = T__100;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:100:8: ( 'SpeedUnit' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:100:10: 'SpeedUnit'
+            {
+            match("SpeedUnit"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__100"
+
+    // $ANTLR start "T__101"
+    public final void mT__101() throws RecognitionException {
+        try {
+            int _type = T__101;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:101:8: ( 'prefix' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:101:10: 'prefix'
+            {
+            match("prefix"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__101"
+
+    // $ANTLR start "T__102"
+    public final void mT__102() throws RecognitionException {
+        try {
+            int _type = T__102;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:102:8: ( 'DataSeries' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:102:10: 'DataSeries'
+            {
+            match("DataSeries"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__102"
+
+    // $ANTLR start "T__103"
+    public final void mT__103() throws RecognitionException {
+        try {
+            int _type = T__103;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:103:8: ( 'data' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:103:10: 'data'
+            {
+            match("data"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__103"
+
+    // $ANTLR start "T__104"
+    public final void mT__104() throws RecognitionException {
+        try {
+            int _type = T__104;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:104:8: ( 'TrafficSource' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:104:10: 'TrafficSource'
+            {
+            match("TrafficSource"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__104"
+
+    // $ANTLR start "T__105"
+    public final void mT__105() throws RecognitionException {
+        try {
+            int _type = T__105;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:105:8: ( 'workload' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:105:10: 'workload'
+            {
+            match("workload"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__105"
+
+    // $ANTLR start "T__106"
+    public final void mT__106() throws RecognitionException {
+        try {
+            int _type = T__106;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:106:8: ( 'addresses' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:106:10: 'addresses'
+            {
+            match("addresses"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__106"
+
+    // $ANTLR start "T__107"
+    public final void mT__107() throws RecognitionException {
+        try {
+            int _type = T__107;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:107:8: ( 'GenericWorkload' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:107:10: 'GenericWorkload'
+            {
+            match("GenericWorkload"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__107"
+
+    // $ANTLR start "T__108"
+    public final void mT__108() throws RecognitionException {
+        try {
+            int _type = T__108;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:108:8: ( 'actions' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:108:10: 'actions'
+            {
+            match("actions"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__108"
+
+    // $ANTLR start "T__109"
+    public final void mT__109() throws RecognitionException {
+        try {
+            int _type = T__109;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:109:8: ( 'BranchAction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:109:10: 'BranchAction'
+            {
+            match("BranchAction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__109"
+
+    // $ANTLR start "T__110"
+    public final void mT__110() throws RecognitionException {
+        try {
+            int _type = T__110;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:110:8: ( 'intern' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:110:10: 'intern'
+            {
+            match("intern"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__110"
+
+    // $ANTLR start "T__111"
+    public final void mT__111() throws RecognitionException {
+        try {
+            int _type = T__111;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:111:8: ( 'LoopAction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:111:10: 'LoopAction'
+            {
+            match("LoopAction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__111"
+
+    // $ANTLR start "T__112"
+    public final void mT__112() throws RecognitionException {
+        try {
+            int _type = T__112;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:112:8: ( 'numIterations' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:112:10: 'numIterations'
+            {
+            match("numIterations"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__112"
+
+    // $ANTLR start "T__113"
+    public final void mT__113() throws RecognitionException {
+        try {
+            int _type = T__113;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:113:8: ( 'SequenceAction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:113:10: 'SequenceAction'
+            {
+            match("SequenceAction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__113"
+
+    // $ANTLR start "T__114"
+    public final void mT__114() throws RecognitionException {
+        try {
+            int _type = T__114;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:114:8: ( 'StartAction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:114:10: 'StartAction'
+            {
+            match("StartAction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__114"
+
+    // $ANTLR start "T__115"
+    public final void mT__115() throws RecognitionException {
+        try {
+            int _type = T__115;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:115:8: ( 'StopAction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:115:10: 'StopAction'
+            {
+            match("StopAction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__115"
+
+    // $ANTLR start "T__116"
+    public final void mT__116() throws RecognitionException {
+        try {
+            int _type = T__116;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:116:8: ( 'TransmitAction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:116:10: 'TransmitAction'
+            {
+            match("TransmitAction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__116"
+
+    // $ANTLR start "T__117"
+    public final void mT__117() throws RecognitionException {
+        try {
+            int _type = T__117;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:117:8: ( 'flow' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:117:10: 'flow'
+            {
+            match("flow"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__117"
+
+    // $ANTLR start "T__118"
+    public final void mT__118() throws RecognitionException {
+        try {
+            int _type = T__118;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:118:8: ( 'WaitAction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:118:10: 'WaitAction'
+            {
+            match("WaitAction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__118"
+
+    // $ANTLR start "T__119"
+    public final void mT__119() throws RecognitionException {
+        try {
+            int _type = T__119;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:119:8: ( 'waitTime' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:119:10: 'waitTime'
+            {
+            match("waitTime"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__119"
+
+    // $ANTLR start "T__120"
+    public final void mT__120() throws RecognitionException {
+        try {
+            int _type = T__120;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:120:8: ( 'VirtualNode' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:120:10: 'VirtualNode'
+            {
+            match("VirtualNode"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__120"
+
+    // $ANTLR start "T__121"
+    public final void mT__121() throws RecognitionException {
+        try {
+            int _type = T__121;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:121:8: ( 'hostedOn' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:121:10: 'hostedOn'
+            {
+            match("hostedOn"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__121"
+
+    // $ANTLR start "T__122"
+    public final void mT__122() throws RecognitionException {
+        try {
+            int _type = T__122;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:122:8: ( 'performance' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:122:10: 'performance'
+            {
+            match("performance"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__122"
+
+    // $ANTLR start "T__123"
+    public final void mT__123() throws RecognitionException {
+        try {
+            int _type = T__123;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:123:8: ( '(' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:123:10: '('
+            {
+            match('('); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__123"
+
+    // $ANTLR start "T__124"
+    public final void mT__124() throws RecognitionException {
+        try {
+            int _type = T__124;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:124:8: ( ')' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:124:10: ')'
+            {
+            match(')'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__124"
+
+    // $ANTLR start "T__125"
+    public final void mT__125() throws RecognitionException {
+        try {
+            int _type = T__125;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:125:8: ( 'interfaces' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:125:10: 'interfaces'
+            {
+            match("interfaces"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__125"
+
+    // $ANTLR start "T__126"
+    public final void mT__126() throws RecognitionException {
+        try {
+            int _type = T__126;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:126:8: ( 'PhysicalNode' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:126:10: 'PhysicalNode'
+            {
+            match("PhysicalNode"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__126"
+
+    // $ANTLR start "T__127"
+    public final void mT__127() throws RecognitionException {
+        try {
+            int _type = T__127;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:127:8: ( 'hosts' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:127:10: 'hosts'
+            {
+            match("hosts"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__127"
+
+    // $ANTLR start "T__128"
+    public final void mT__128() throws RecognitionException {
+        try {
+            int _type = T__128;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:128:8: ( 'PhysicalLink' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:128:10: 'PhysicalLink'
+            {
+            match("PhysicalLink"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__128"
+
+    // $ANTLR start "T__129"
+    public final void mT__129() throws RecognitionException {
+        try {
+            int _type = T__129;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:129:8: ( 'connects' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:129:10: 'connects'
+            {
+            match("connects"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__129"
+
+    // $ANTLR start "T__130"
+    public final void mT__130() throws RecognitionException {
+        try {
+            int _type = T__130;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:130:8: ( 'VirtualLink' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:130:10: 'VirtualLink'
+            {
+            match("VirtualLink"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__130"
+
+    // $ANTLR start "T__131"
+    public final void mT__131() throws RecognitionException {
+        try {
+            int _type = T__131;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:131:8: ( 'ProtocolsRepository' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:131:10: 'ProtocolsRepository'
+            {
+            match("ProtocolsRepository"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__131"
+
+    // $ANTLR start "T__132"
+    public final void mT__132() throws RecognitionException {
+        try {
+            int _type = T__132;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:132:8: ( 'protocols' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:132:10: 'protocols'
+            {
+            match("protocols"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__132"
+
+    // $ANTLR start "T__133"
+    public final void mT__133() throws RecognitionException {
+        try {
+            int _type = T__133;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:133:8: ( 'stacks' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:133:10: 'stacks'
+            {
+            match("stacks"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__133"
+
+    // $ANTLR start "T__134"
+    public final void mT__134() throws RecognitionException {
+        try {
+            int _type = T__134;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:134:8: ( 'RoutesRepository' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:134:10: 'RoutesRepository'
+            {
+            match("RoutesRepository"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__134"
+
+    // $ANTLR start "T__135"
+    public final void mT__135() throws RecognitionException {
+        try {
+            int _type = T__135;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:135:8: ( 'flowRoutes' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:135:10: 'flowRoutes'
+            {
+            match("flowRoutes"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__135"
+
+    // $ANTLR start "T__136"
+    public final void mT__136() throws RecognitionException {
+        try {
+            int _type = T__136;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:136:8: ( 'directions' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:136:10: 'directions'
+            {
+            match("directions"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__136"
+
+    // $ANTLR start "T__137"
+    public final void mT__137() throws RecognitionException {
+        try {
+            int _type = T__137;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:137:8: ( 'ProtocolStack' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:137:10: 'ProtocolStack'
+            {
+            match("ProtocolStack"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__137"
+
+    // $ANTLR start "T__138"
+    public final void mT__138() throws RecognitionException {
+        try {
+            int _type = T__138;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:138:8: ( 'layers' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:138:10: 'layers'
+            {
+            match("layers"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__138"
+
+    // $ANTLR start "T__139"
+    public final void mT__139() throws RecognitionException {
+        try {
+            int _type = T__139;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:139:8: ( 'ProtocolLayer' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:139:10: 'ProtocolLayer'
+            {
+            match("ProtocolLayer"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__139"
+
+    // $ANTLR start "T__140"
+    public final void mT__140() throws RecognitionException {
+        try {
+            int _type = T__140;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:140:8: ( 'protocol' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:140:10: 'protocol'
+            {
+            match("protocol"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__140"
+
+    // $ANTLR start "T__141"
+    public final void mT__141() throws RecognitionException {
+        try {
+            int _type = T__141;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:141:8: ( 'isCarriedBy' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:141:10: 'isCarriedBy'
+            {
+            match("isCarriedBy"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__141"
+
+    // $ANTLR start "T__142"
+    public final void mT__142() throws RecognitionException {
+        try {
+            int _type = T__142;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:142:8: ( 'carries' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:142:10: 'carries'
+            {
+            match("carries"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__142"
+
+    // $ANTLR start "T__143"
+    public final void mT__143() throws RecognitionException {
+        try {
+            int _type = T__143;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:143:8: ( 'Route' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:143:10: 'Route'
+            {
+            match("Route"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__143"
+
+    // $ANTLR start "T__144"
+    public final void mT__144() throws RecognitionException {
+        try {
+            int _type = T__144;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:144:8: ( 'start' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:144:10: 'start'
+            {
+            match("start"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__144"
+
+    // $ANTLR start "T__145"
+    public final void mT__145() throws RecognitionException {
+        try {
+            int _type = T__145;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:145:8: ( 'end' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:145:10: 'end'
+            {
+            match("end"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__145"
+
+    // $ANTLR start "T__146"
+    public final void mT__146() throws RecognitionException {
+        try {
+            int _type = T__146;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:146:8: ( 'numHops' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:146:10: 'numHops'
+            {
+            match("numHops"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__146"
+
+    // $ANTLR start "T__147"
+    public final void mT__147() throws RecognitionException {
+        try {
+            int _type = T__147;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:147:8: ( 'hops' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:147:10: 'hops'
+            {
+            match("hops"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__147"
+
+    // $ANTLR start "T__148"
+    public final void mT__148() throws RecognitionException {
+        try {
+            int _type = T__148;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:148:8: ( 'FlowRoute' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:148:10: 'FlowRoute'
+            {
+            match("FlowRoute"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__148"
+
+    // $ANTLR start "T__149"
+    public final void mT__149() throws RecognitionException {
+        try {
+            int _type = T__149;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:149:8: ( 'Direction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:149:10: 'Direction'
+            {
+            match("Direction"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__149"
+
+    // $ANTLR start "T__150"
+    public final void mT__150() throws RecognitionException {
+        try {
+            int _type = T__150;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:150:8: ( 'onNode' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:150:10: 'onNode'
+            {
+            match("onNode"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__150"
+
+    // $ANTLR start "T__151"
+    public final void mT__151() throws RecognitionException {
+        try {
+            int _type = T__151;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:151:8: ( 'via' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:151:10: 'via'
+            {
+            match("via"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__151"
+
+    // $ANTLR start "T__152"
+    public final void mT__152() throws RecognitionException {
+        try {
+            int _type = T__152;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:152:8: ( 'distance' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:152:10: 'distance'
+            {
+            match("distance"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__152"
+
+    // $ANTLR start "T__153"
+    public final void mT__153() throws RecognitionException {
+        try {
+            int _type = T__153;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:153:8: ( 'Hop' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:153:10: 'Hop'
+            {
+            match("Hop"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__153"
+
+    // $ANTLR start "T__154"
+    public final void mT__154() throws RecognitionException {
+        try {
+            int _type = T__154;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:154:8: ( 'interfaceref' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:154:10: 'interfaceref'
+            {
+            match("interfaceref"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__154"
+
+    // $ANTLR start "T__155"
+    public final void mT__155() throws RecognitionException {
+        try {
+            int _type = T__155;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:155:8: ( 'nextHop' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:155:10: 'nextHop'
+            {
+            match("nextHop"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__155"
+
+    // $ANTLR start "T__156"
+    public final void mT__156() throws RecognitionException {
+        try {
+            int _type = T__156;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:156:8: ( 'PhysicalNetworkInterface' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:156:10: 'PhysicalNetworkInterface'
+            {
+            match("PhysicalNetworkInterface"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__156"
+
+    // $ANTLR start "T__157"
+    public final void mT__157() throws RecognitionException {
+        try {
+            int _type = T__157;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:157:8: ( 'usedProtocolStack' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:157:10: 'usedProtocolStack'
+            {
+            match("usedProtocolStack"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__157"
+
+    // $ANTLR start "T__158"
+    public final void mT__158() throws RecognitionException {
+        try {
+            int _type = T__158;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:158:8: ( 'VirtualNetworkInterface' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:158:10: 'VirtualNetworkInterface'
+            {
+            match("VirtualNetworkInterface"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__158"
+
+    // $ANTLR start "T__159"
+    public final void mT__159() throws RecognitionException {
+        try {
+            int _type = T__159;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:159:8: ( 'startState' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:159:10: 'startState'
+            {
+            match("startState"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__159"
+
+    // $ANTLR start "T__160"
+    public final void mT__160() throws RecognitionException {
+        try {
+            int _type = T__160;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:160:8: ( 'deliveryGuaranteed' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:160:10: 'deliveryGuaranteed'
+            {
+            match("deliveryGuaranteed"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__160"
+
+    // $ANTLR start "T__161"
+    public final void mT__161() throws RecognitionException {
+        try {
+            int _type = T__161;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:161:8: ( 'isDefault' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:161:10: 'isDefault'
+            {
+            match("isDefault"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__161"
+
+    // $ANTLR start "RULE_ID"
+    public final void mRULE_ID() throws RecognitionException {
+        try {
+            int _type = RULE_ID;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31190:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31190:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31190:11: ( '^' )?
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0=='^') ) {
+                alt1=1;
+            }
+            switch (alt1) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31190:11: '^'
+                    {
+                    match('^'); 
+
+                    }
+                    break;
+
+            }
+
+            if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31190:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='Z')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='z')) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop2;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ID"
+
+    // $ANTLR start "RULE_INT"
+    public final void mRULE_INT() throws RecognitionException {
+        try {
+            int _type = RULE_INT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31192:10: ( ( '0' .. '9' )+ )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31192:12: ( '0' .. '9' )+
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31192:12: ( '0' .. '9' )+
+            int cnt3=0;
+            loop3:
+            do {
+                int alt3=2;
+                int LA3_0 = input.LA(1);
+
+                if ( ((LA3_0>='0' && LA3_0<='9')) ) {
+                    alt3=1;
+                }
+
+
+                switch (alt3) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31192:13: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt3 >= 1 ) break loop3;
+                        EarlyExitException eee =
+                            new EarlyExitException(3, input);
+                        throw eee;
+                }
+                cnt3++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_INT"
+
+    // $ANTLR start "RULE_STRING"
+    public final void mRULE_STRING() throws RecognitionException {
+        try {
+            int _type = RULE_STRING;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31194:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31194:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31194:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0=='\"') ) {
+                alt6=1;
+            }
+            else if ( (LA6_0=='\'') ) {
+                alt6=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 6, 0, input);
+
+                throw nvae;
+            }
+            switch (alt6) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31194:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
+                    {
+                    match('\"'); 
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31194:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    loop4:
+                    do {
+                        int alt4=3;
+                        int LA4_0 = input.LA(1);
+
+                        if ( (LA4_0=='\\') ) {
+                            alt4=1;
+                        }
+                        else if ( ((LA4_0>='\u0000' && LA4_0<='!')||(LA4_0>='#' && LA4_0<='[')||(LA4_0>=']' && LA4_0<='\uFFFF')) ) {
+                            alt4=2;
+                        }
+
+
+                        switch (alt4) {
+                    	case 1 :
+                    	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31194:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31194:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop4;
+                        }
+                    } while (true);
+
+                    match('\"'); 
+
+                    }
+                    break;
+                case 2 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31194:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
+                    {
+                    match('\''); 
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31194:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    loop5:
+                    do {
+                        int alt5=3;
+                        int LA5_0 = input.LA(1);
+
+                        if ( (LA5_0=='\\') ) {
+                            alt5=1;
+                        }
+                        else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>=']' && LA5_0<='\uFFFF')) ) {
+                            alt5=2;
+                        }
+
+
+                        switch (alt5) {
+                    	case 1 :
+                    	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31194:54: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31194:61: ~ ( ( '\\\\' | '\\'' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop5;
+                        }
+                    } while (true);
+
+                    match('\''); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_STRING"
+
+    // $ANTLR start "RULE_ML_COMMENT"
+    public final void mRULE_ML_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_ML_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31196:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31196:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31196:24: ( options {greedy=false; } : . )*
+            loop7:
+            do {
+                int alt7=2;
+                int LA7_0 = input.LA(1);
+
+                if ( (LA7_0=='*') ) {
+                    int LA7_1 = input.LA(2);
+
+                    if ( (LA7_1=='/') ) {
+                        alt7=2;
+                    }
+                    else if ( ((LA7_1>='\u0000' && LA7_1<='.')||(LA7_1>='0' && LA7_1<='\uFFFF')) ) {
+                        alt7=1;
+                    }
+
+
+                }
+                else if ( ((LA7_0>='\u0000' && LA7_0<=')')||(LA7_0>='+' && LA7_0<='\uFFFF')) ) {
+                    alt7=1;
+                }
+
+
+                switch (alt7) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31196:52: .
+            	    {
+            	    matchAny(); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop7;
+                }
+            } while (true);
+
+            match("*/"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ML_COMMENT"
+
+    // $ANTLR start "RULE_SL_COMMENT"
+    public final void mRULE_SL_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_SL_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31198:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31198:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31198:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            loop8:
+            do {
+                int alt8=2;
+                int LA8_0 = input.LA(1);
+
+                if ( ((LA8_0>='\u0000' && LA8_0<='\t')||(LA8_0>='\u000B' && LA8_0<='\f')||(LA8_0>='\u000E' && LA8_0<='\uFFFF')) ) {
+                    alt8=1;
+                }
+
+
+                switch (alt8) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31198:24: ~ ( ( '\\n' | '\\r' ) )
+            	    {
+            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop8;
+                }
+            } while (true);
+
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31198:40: ( ( '\\r' )? '\\n' )?
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+
+            if ( (LA10_0=='\n'||LA10_0=='\r') ) {
+                alt10=1;
+            }
+            switch (alt10) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31198:41: ( '\\r' )? '\\n'
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31198:41: ( '\\r' )?
+                    int alt9=2;
+                    int LA9_0 = input.LA(1);
+
+                    if ( (LA9_0=='\r') ) {
+                        alt9=1;
+                    }
+                    switch (alt9) {
+                        case 1 :
+                            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31198:41: '\\r'
+                            {
+                            match('\r'); 
+
+                            }
+                            break;
+
+                    }
+
+                    match('\n'); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_SL_COMMENT"
+
+    // $ANTLR start "RULE_WS"
+    public final void mRULE_WS() throws RecognitionException {
+        try {
+            int _type = RULE_WS;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31200:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31200:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31200:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            int cnt11=0;
+            loop11:
+            do {
+                int alt11=2;
+                int LA11_0 = input.LA(1);
+
+                if ( ((LA11_0>='\t' && LA11_0<='\n')||LA11_0=='\r'||LA11_0==' ') ) {
+                    alt11=1;
+                }
+
+
+                switch (alt11) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:
+            	    {
+            	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt11 >= 1 ) break loop11;
+                        EarlyExitException eee =
+                            new EarlyExitException(11, input);
+                        throw eee;
+                }
+                cnt11++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_WS"
+
+    // $ANTLR start "RULE_ANY_OTHER"
+    public final void mRULE_ANY_OTHER() throws RecognitionException {
+        try {
+            int _type = RULE_ANY_OTHER;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31202:16: ( . )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31202:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:8: ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | T__158 | T__159 | T__160 | T__161 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt12=158;
+        alt12 = dfa12.predict(input);
+        switch (alt12) {
+            case 1 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:10: T__11
+                {
+                mT__11(); 
+
+                }
+                break;
+            case 2 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:16: T__12
+                {
+                mT__12(); 
+
+                }
+                break;
+            case 3 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:22: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 4 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:28: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 5 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:34: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 6 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:40: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 7 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:46: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 8 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:52: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 9 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:58: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 10 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:64: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 11 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:70: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 12 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:76: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 13 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:82: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 14 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:88: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 15 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:94: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 16 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:100: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 17 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:106: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 18 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:112: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 19 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:118: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 20 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:124: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 21 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:130: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 22 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:136: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 23 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:142: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 24 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:148: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 25 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:154: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 26 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:160: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 27 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:166: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 28 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:172: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 29 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:178: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 30 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:184: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 31 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:190: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 32 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:196: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 33 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:202: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 34 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:208: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 35 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:214: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 36 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:220: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 37 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:226: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 38 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:232: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 39 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:238: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 40 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:244: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 41 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:250: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 42 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:256: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 43 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:262: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 44 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:268: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 45 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:274: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 46 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:280: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 47 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:286: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 48 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:292: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 49 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:298: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 50 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:304: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 51 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:310: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 52 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:316: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 53 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:322: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 54 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:328: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 55 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:334: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 56 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:340: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 57 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:346: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 58 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:352: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 59 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:358: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 60 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:364: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 61 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:370: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 62 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:376: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 63 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:382: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 64 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:388: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 65 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:394: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 66 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:400: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 67 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:406: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 68 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:412: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 69 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:418: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 70 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:424: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 71 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:430: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 72 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:436: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 73 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:442: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 74 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:448: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 75 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:454: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 76 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:460: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 77 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:466: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 78 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:472: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 79 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:478: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 80 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:484: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 81 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:490: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 82 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:496: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 83 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:502: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 84 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:508: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 85 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:514: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 86 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:520: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 87 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:526: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 88 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:532: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 89 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:538: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 90 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:544: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 91 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:551: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 92 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:558: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 93 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:565: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 94 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:572: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 95 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:579: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 96 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:586: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 97 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:593: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 98 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:600: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 99 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:607: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 100 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:614: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 101 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:621: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 102 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:628: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 103 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:635: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 104 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:642: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 105 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:649: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 106 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:656: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 107 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:663: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 108 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:670: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 109 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:677: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 110 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:684: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 111 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:691: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 112 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:698: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 113 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:705: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 114 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:712: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 115 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:719: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 116 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:726: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 117 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:733: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 118 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:740: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 119 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:747: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 120 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:754: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 121 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:761: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 122 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:768: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 123 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:775: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 124 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:782: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 125 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:789: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 126 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:796: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 127 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:803: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 128 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:810: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 129 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:817: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 130 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:824: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 131 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:831: T__141
+                {
+                mT__141(); 
+
+                }
+                break;
+            case 132 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:838: T__142
+                {
+                mT__142(); 
+
+                }
+                break;
+            case 133 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:845: T__143
+                {
+                mT__143(); 
+
+                }
+                break;
+            case 134 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:852: T__144
+                {
+                mT__144(); 
+
+                }
+                break;
+            case 135 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:859: T__145
+                {
+                mT__145(); 
+
+                }
+                break;
+            case 136 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:866: T__146
+                {
+                mT__146(); 
+
+                }
+                break;
+            case 137 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:873: T__147
+                {
+                mT__147(); 
+
+                }
+                break;
+            case 138 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:880: T__148
+                {
+                mT__148(); 
+
+                }
+                break;
+            case 139 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:887: T__149
+                {
+                mT__149(); 
+
+                }
+                break;
+            case 140 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:894: T__150
+                {
+                mT__150(); 
+
+                }
+                break;
+            case 141 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:901: T__151
+                {
+                mT__151(); 
+
+                }
+                break;
+            case 142 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:908: T__152
+                {
+                mT__152(); 
+
+                }
+                break;
+            case 143 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:915: T__153
+                {
+                mT__153(); 
+
+                }
+                break;
+            case 144 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:922: T__154
+                {
+                mT__154(); 
+
+                }
+                break;
+            case 145 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:929: T__155
+                {
+                mT__155(); 
+
+                }
+                break;
+            case 146 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:936: T__156
+                {
+                mT__156(); 
+
+                }
+                break;
+            case 147 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:943: T__157
+                {
+                mT__157(); 
+
+                }
+                break;
+            case 148 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:950: T__158
+                {
+                mT__158(); 
+
+                }
+                break;
+            case 149 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:957: T__159
+                {
+                mT__159(); 
+
+                }
+                break;
+            case 150 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:964: T__160
+                {
+                mT__160(); 
+
+                }
+                break;
+            case 151 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:971: T__161
+                {
+                mT__161(); 
+
+                }
+                break;
+            case 152 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:978: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 153 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:986: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 154 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:995: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 155 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:1007: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 156 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:1023: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 157 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:1039: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 158 :
+                // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1:1047: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA12 dfa12 = new DFA12(this);
+    static final String DFA12_eotS =
+        "\1\uffff\2\71\1\77\1\102\1\71\1\107\1\111\1\113\4\71\1\uffff\3\71\2\uffff\15\71\1\uffff\3\71\1\176\1\177\1\uffff\4\71\2\uffff\3\71\1\67\2\uffff\3\67\2\uffff\1\71\1\uffff\5\71\1\uffff\2\71\1\uffff\4\71\1\uffff\1\71\1\uffff\1\71\1\uffff\7\71\1\uffff\10\71\2\uffff\32\71\1\uffff\5\71\3\uffff\5\71\2\uffff\3\71\5\uffff\11\71\1\u00ed\5\71\1\u00f5\25\71\1\u0110\11\71\1\u011a\10\71\1\u0123\32\71\1\u0140\1\u0141\3\71\1\u0147\4\71\1\uffff\1\u014c\1\71\1\u014e\4\71\1\uffff\14\71\1\u0163\15\71\1\uffff\2\71\1\u0173\6\71\1\uffff\10\71\1\uffff\15\71\1\u0191\2\71\1\u0194\13\71\2\uffff\1\71\1\u01a1\1\71\1\u01a3\1\71\1\uffff\4\71\1\uffff\1\u01a9\1\uffff\24\71\1\uffff\7\71\1\u01c6\7\71\1\uffff\13\71\1\u01da\2\71\1\u01dd\15\71\1\u01eb\1\uffff\2\71\1\uffff\2\71\1\u01f1\11\71\1\uffff\1\71\1\uffff\5\71\1\uffff\11\71\1\u020c\3\71\1\u0210\14\71\1\u021d\1\71\1\uffff\12\71\1\u0229\10\71\1\uffff\1\u0232\1\u0233\1\uffff\15\71\1\uffff\5\71\1\uffff\7\71\1\u024d\1\u024f\6\71\1\u0256\1\71\1\u0258\1\u0259\7\71\1\uffff\3\71\1\uffff\14\71\1\uffff\6\71\1\u027c\4\71\1\uffff\10\71\2\uffff\6\71\1\u0292\1\u0293\21\71\1\uffff\1\71\1\uffff\5\71\1\u02ac\1\uffff\1\71\2\uffff\12\71\1\u02b9\10\71\1\u02c2\5\71\1\u02c8\2\71\1\u02cc\4\71\1\u02d1\1\uffff\25\71\2\uffff\5\71\1\u02f0\7\71\1\u02f9\1\u02fa\11\71\1\uffff\13\71\1\u0310\1\uffff\7\71\1\u0318\1\uffff\5\71\1\uffff\1\u031e\2\71\1\uffff\4\71\1\uffff\4\71\1\u0329\13\71\1\u0338\1\71\1\u033a\5\71\1\u0340\1\u0341\4\71\1\uffff\10\71\2\uffff\2\71\1\u0350\2\71\1\u0354\10\71\1\u035d\6\71\1\uffff\7\71\1\uffff\1\71\1\u036e\2\71\1\u0371\1\uffff\1\u0372\11\71\1\uffff\1\71\1\u037d\12\71\1\u0388\1\71\1\uffff\1\71\1\uffff\2\71\1\u038d\2\71\2\uffff\1\u0390\13\71\1\u039c\1\u039d\1\uffff\3\71\1\uffff\4\71\1\u03a5\1\71\1\u03a7\1\71\1\uffff\7\71\1\u03b0\10\71\1\uffff\2\71\2\uffff\6\71\1\u03c2\1\u03c4\1\u03c5\1\71\1\uffff\12\71\1\uffff\3\71\1\u03d4\1\uffff\2\71\1\uffff\13\71\2\uffff\7\71\1\uffff\1\71\1\uffff\1\u03ea\2\71\1\u03ed\4\71\1\uffff\16\71\1\u0400\2\71\1\uffff\1\71\2\uffff\1\71\1\u0405\1\71\1\u0407\1\u0409\11\71\1\uffff\21\71\1\u0424\1\71\1\u0426\1\71\1\uffff\1\u0428\1\71\1\uffff\21\71\1\u043b\1\uffff\4\71\1\uffff\1\71\1\uffff\1\71\1\uffff\1\71\1\u0443\1\u0444\12\71\1\u044f\6\71\1\u0456\1\71\1\u0458\3\71\1\uffff\1\71\1\uffff\1\71\1\uffff\6\71\1\u0464\3\71\1\u0468\1\71\1\u046a\5\71\1\uffff\1\u0470\2\71\1\u0473\3\71\2\uffff\5\71\1\u047c\1\71\1\u047e\2\71\1\uffff\4\71\1\u0485\1\71\1\uffff\1\u0487\1\uffff\2\71\1\u048a\1\u048b\1\u048c\6\71\1\uffff\2\71\1\u0495\1\uffff\1\71\1\uffff\5\71\1\uffff\2\71\1\uffff\10\71\1\uffff\1\71\1\uffff\1\u04a7\5\71\1\uffff\1\71\1\uffff\2\71\3\uffff\1\71\1\u04b1\4\71\1\u04b6\1\71\1\uffff\16\71\1\u04c6\1\71\1\u04c8\1\uffff\1\u04c9\4\71\1\u04ce\1\u04cf\2\71\1\uffff\1\u04d2\3\71\1\uffff\1\71\1\u04d7\14\71\1\u04e4\1\uffff\1\u04e5\2\uffff\3\71\1\u04e9\2\uffff\2\71\1\uffff\1\71\1\u04ed\2\71\1\uffff\2\71\1\u04f2\11\71\2\uffff\2\71\1\u04fe\1\uffff\3\71\1\uffff\4\71\1\uffff\1\u0507\2\71\1\u050a\2\71\1\u050d\4\71\1\uffff\2\71\1\u0514\2\71\1\u0517\1\71\1\u0519\1\uffff\2\71\1\uffff\1\71\1\u051d\1\uffff\3\71\1\u0521\2\71\1\uffff\1\71\1\u0525\1\uffff\1\71\1\uffff\3\71\1\uffff\1\u052a\2\71\1\uffff\1\u052d\1\u052e\1\71\1\uffff\4\71\1\uffff\1\71\1\u0535\2\uffff\2\71\1\u0538\1\u053a\2\71\1\uffff\1\u053d\1\71\1\uffff\1\71\1\uffff\1\u0541\1\u0542\1\uffff\3\71\2\uffff\6\71\1\u054c\2\71\1\uffff\4\71\1\u0553\1\71\1\uffff\1\u0555\1\uffff";
+    static final String DFA12_eofS =
+        "\u0556\uffff";
+    static final String DFA12_minS =
+        "\1\0\1\162\1\141\2\60\1\141\3\60\1\162\1\151\1\141\1\145\1\uffff\1\141\1\157\1\141\2\uffff\1\151\1\156\1\150\1\141\1\156\2\141\1\157\1\141\1\145\1\143\1\106\1\145\1\uffff\1\157\1\156\1\141\2\60\1\uffff\1\162\1\141\1\157\1\141\2\uffff\1\154\1\156\1\157\1\101\2\uffff\2\0\1\52\2\uffff\1\141\1\uffff\1\154\1\162\1\157\1\144\1\160\1\uffff\1\165\1\144\1\uffff\1\144\2\155\1\170\1\uffff\1\125\1\uffff\1\156\1\uffff\1\164\1\141\1\164\1\143\1\145\1\162\1\164\1\uffff\1\164\1\154\1\162\1\141\1\146\1\156\1\146\1\162\2\uffff\1\162\1\103\1\164\1\171\1\157\1\170\1\165\2\164\1\162\1\156\1\171\1\165\1\154\1\141\1\146\1\145\1\161\1\141\1\164\1\144\1\164\1\117\1\106\1\141\1\160\1\uffff\1\156\1\151\1\145\1\156\1\165\3\uffff\1\141\1\162\1\151\1\157\1\151\2\uffff\1\157\1\116\1\160\5\uffff\1\145\1\146\1\163\2\167\1\116\1\151\1\145\1\141\1\60\3\145\1\101\1\164\1\60\2\145\1\156\1\163\1\153\1\141\1\143\2\146\1\167\1\141\1\154\1\164\1\151\1\145\1\164\1\165\1\143\1\164\1\162\1\146\1\60\1\162\1\164\1\160\1\141\2\145\1\163\1\164\1\123\1\60\1\145\1\141\1\143\1\145\1\153\1\145\1\164\1\165\1\60\1\164\1\145\1\165\1\162\1\160\1\145\1\162\1\151\1\106\1\164\1\163\1\144\1\164\2\163\1\164\2\144\1\164\1\146\1\153\1\164\1\160\1\164\1\167\1\157\2\60\1\146\1\145\1\141\1\60\1\157\1\164\1\162\1\164\1\uffff\1\60\1\163\1\60\1\162\1\164\1\157\1\110\1\uffff\1\162\1\163\1\143\1\120\1\145\1\155\1\141\1\145\1\157\1\151\2\157\1\60\1\157\1\151\1\166\1\143\1\141\1\143\1\153\1\164\1\167\1\143\1\151\1\162\1\145\1\uffff\1\151\1\165\1\60\1\162\1\146\1\162\1\151\1\157\1\165\1\uffff\1\162\1\120\1\162\1\143\1\163\1\162\2\145\1\uffff\1\167\1\144\1\145\1\164\1\101\1\162\1\145\1\157\1\106\1\141\1\164\2\145\1\60\1\164\1\151\1\60\1\120\1\157\1\145\1\146\1\163\1\154\1\124\2\101\1\122\1\144\2\uffff\1\151\1\60\1\162\1\60\1\157\1\uffff\1\144\1\171\2\151\1\uffff\1\60\1\uffff\1\147\1\145\1\160\1\157\1\151\1\120\1\150\1\145\1\164\1\163\1\147\1\163\1\143\1\170\2\162\1\145\1\154\1\151\1\156\1\uffff\1\171\1\156\1\145\1\164\1\156\1\164\1\163\1\60\1\141\1\145\1\147\1\157\1\143\1\145\1\141\1\uffff\1\162\1\141\1\146\2\143\1\160\1\155\1\154\2\145\1\164\1\60\2\163\1\60\1\141\1\125\1\156\1\101\1\143\1\156\1\163\1\156\1\106\1\164\1\141\1\162\1\144\1\60\1\uffff\1\141\1\156\1\uffff\1\162\1\155\1\60\1\151\1\155\1\157\1\151\2\143\1\157\1\145\1\143\1\uffff\1\144\1\uffff\1\165\1\145\1\101\1\155\1\157\1\uffff\1\163\1\162\1\163\1\160\1\143\1\145\1\101\1\162\1\114\1\60\1\141\1\163\1\157\1\60\1\155\1\153\1\156\1\141\1\172\1\151\1\145\1\141\1\162\1\151\1\143\1\165\1\60\1\164\1\uffff\1\162\1\123\1\165\1\154\1\164\1\163\1\154\1\151\1\165\1\141\1\60\1\141\1\157\1\160\1\145\1\141\1\162\1\164\1\151\1\uffff\2\60\1\uffff\1\162\1\156\2\143\1\164\1\141\2\163\1\154\1\145\1\164\1\163\1\117\1\uffff\1\156\1\165\1\157\1\126\1\122\1\uffff\1\143\1\151\1\141\1\155\2\164\1\165\2\60\1\151\1\164\1\120\1\144\1\145\1\156\1\60\1\141\2\60\1\106\1\162\1\143\1\123\1\120\1\162\1\145\1\uffff\1\164\1\151\1\154\1\uffff\1\141\1\103\1\164\1\156\1\145\1\164\1\144\1\164\1\171\1\157\1\145\1\162\1\uffff\1\141\1\145\1\157\1\162\1\160\1\151\1\60\1\114\1\145\1\154\1\143\1\uffff\2\154\1\157\1\144\1\156\1\151\1\145\1\157\2\uffff\1\145\1\151\1\145\1\164\1\151\1\164\2\60\1\157\1\104\1\145\1\114\1\156\1\164\1\157\1\164\1\141\1\145\1\123\1\164\1\144\1\145\2\151\1\164\1\uffff\1\157\1\uffff\1\156\2\145\1\144\1\156\1\60\1\uffff\1\164\2\uffff\1\154\1\157\1\123\1\164\2\145\1\157\1\156\1\151\1\156\1\60\2\156\1\162\1\164\1\157\1\162\2\145\1\60\1\114\1\117\1\151\1\107\1\156\1\60\1\145\1\164\1\60\1\146\1\141\1\154\1\157\1\60\1\uffff\1\145\1\151\1\144\1\164\1\145\2\114\1\162\1\151\2\145\1\106\1\156\1\103\1\164\1\101\1\151\1\157\2\151\1\163\2\uffff\1\167\1\101\1\165\1\104\1\145\1\60\1\104\1\165\1\157\1\162\1\160\1\157\1\101\2\60\2\157\1\145\1\165\1\147\1\163\2\162\1\164\1\uffff\1\151\1\157\1\162\1\145\1\151\1\143\1\162\1\143\1\147\1\157\1\147\1\60\1\uffff\1\143\1\146\1\141\1\162\1\156\1\157\1\162\1\60\1\uffff\1\145\1\156\1\157\1\165\1\163\1\uffff\1\60\1\145\1\141\1\uffff\2\164\1\141\1\156\1\uffff\1\164\1\144\1\156\1\102\1\60\1\123\1\145\1\151\1\122\1\164\1\141\1\164\1\141\1\120\1\163\1\165\1\60\1\157\1\60\1\143\1\157\1\156\2\166\2\60\1\124\1\162\1\165\1\156\1\uffff\2\157\1\163\1\143\1\151\1\157\1\165\1\143\2\uffff\2\156\1\60\1\162\1\102\1\60\1\146\1\145\1\120\1\157\1\167\1\153\1\143\1\157\1\60\1\123\1\145\1\164\1\156\1\102\1\156\1\uffff\1\145\1\162\1\146\1\165\1\146\1\164\1\101\1\uffff\1\156\1\60\1\156\1\141\1\60\1\uffff\1\60\1\171\1\167\1\151\1\156\1\154\1\167\1\145\1\153\1\171\1\uffff\1\160\1\60\1\145\1\164\1\144\1\156\1\145\1\141\1\171\1\145\1\164\1\145\1\60\1\156\1\uffff\1\155\1\uffff\1\164\1\156\1\60\2\145\2\uffff\1\60\1\141\1\162\1\147\1\165\1\156\1\106\1\157\1\141\1\163\1\162\1\164\2\60\1\uffff\1\143\2\141\1\uffff\1\123\1\163\1\141\1\156\1\60\1\154\1\60\1\156\1\uffff\1\145\1\163\1\150\1\104\2\141\1\144\1\60\1\141\1\146\1\143\1\151\1\157\1\141\1\154\1\147\1\uffff\1\101\1\162\2\uffff\1\145\1\141\1\157\2\145\1\157\3\60\1\145\1\uffff\1\146\1\167\1\145\1\153\1\160\1\143\1\145\1\144\1\145\1\162\1\uffff\1\143\1\160\1\151\1\60\1\uffff\1\116\1\156\1\uffff\1\164\1\141\1\164\1\142\1\147\1\165\1\154\1\142\1\151\1\143\1\151\2\uffff\1\145\1\164\1\156\1\160\1\163\1\162\1\163\1\uffff\1\157\1\uffff\1\60\1\143\1\163\1\60\1\145\1\164\1\156\1\123\1\uffff\1\163\1\151\1\164\1\147\1\143\1\155\2\164\1\157\1\144\1\141\2\162\1\156\1\60\1\163\1\162\1\uffff\1\145\2\uffff\1\145\1\60\1\157\2\60\1\157\1\153\1\162\1\102\1\116\1\146\1\164\2\157\1\uffff\1\141\1\102\1\151\1\164\1\150\1\154\1\126\1\156\1\123\1\154\1\164\1\145\1\157\1\163\1\145\1\144\1\145\1\60\1\141\1\60\1\141\1\uffff\1\60\1\151\1\uffff\1\154\1\145\1\144\2\164\1\143\2\165\1\157\1\145\1\116\1\150\1\146\1\144\1\156\1\163\1\145\1\60\1\uffff\1\163\1\153\1\162\1\144\1\uffff\1\162\1\uffff\1\145\1\uffff\1\163\2\60\1\141\1\157\1\123\1\151\2\156\1\155\1\171\1\157\1\151\1\60\1\145\1\141\1\143\1\164\1\145\1\157\1\60\1\156\1\60\1\156\1\167\1\143\1\uffff\1\155\1\uffff\1\144\1\uffff\1\156\1\141\1\156\1\167\1\141\1\162\1\60\2\162\1\154\1\60\1\141\1\60\1\164\1\162\1\164\1\104\1\103\1\uffff\1\60\1\111\1\146\1\60\1\153\1\162\1\151\2\uffff\1\156\1\144\1\160\1\157\1\145\1\60\1\145\1\60\1\156\1\157\1\uffff\1\126\1\162\1\164\1\141\1\60\1\162\1\uffff\1\60\1\uffff\1\143\1\151\3\60\1\147\1\171\1\143\1\151\1\143\1\165\1\uffff\1\145\1\141\1\60\1\uffff\1\155\1\uffff\1\167\3\145\1\157\1\uffff\1\156\1\123\1\uffff\1\111\1\146\1\164\1\144\2\145\2\156\1\uffff\1\163\1\uffff\1\60\1\156\1\141\2\151\1\143\1\uffff\1\171\1\uffff\1\171\1\144\3\uffff\1\124\1\60\1\171\1\144\1\153\1\143\1\60\1\164\1\uffff\1\145\1\141\1\163\1\145\1\154\1\155\1\164\1\160\1\156\1\123\1\157\1\167\1\120\1\143\1\60\1\164\1\60\1\uffff\1\60\1\162\1\141\1\157\1\153\2\60\1\164\1\151\1\uffff\1\60\1\164\1\163\1\164\1\uffff\1\151\1\60\1\162\1\163\1\144\1\141\1\160\2\145\1\164\1\160\1\162\1\151\1\145\1\60\1\uffff\1\60\2\uffff\1\151\1\142\1\156\1\60\2\uffff\1\150\1\155\1\uffff\1\150\1\60\1\165\1\157\1\uffff\2\145\1\60\1\171\1\157\1\162\1\143\2\145\1\171\1\144\1\162\2\uffff\1\141\1\154\1\60\1\uffff\1\102\1\145\1\122\1\uffff\1\162\1\156\1\103\1\163\1\uffff\1\60\1\156\1\146\1\60\1\162\1\143\1\60\1\164\1\146\1\142\1\145\1\uffff\2\120\1\60\2\145\1\60\1\157\1\60\1\uffff\1\145\1\141\1\uffff\1\146\1\60\1\uffff\1\150\1\123\1\154\1\60\2\123\1\uffff\1\161\1\60\1\uffff\1\155\1\uffff\1\156\1\143\1\141\1\uffff\1\60\1\160\1\145\1\uffff\2\60\1\120\1\uffff\1\160\1\164\1\145\1\143\1\uffff\1\145\1\60\2\uffff\1\123\1\157\2\60\1\145\1\143\1\uffff\1\60\1\156\1\uffff\1\145\1\uffff\2\60\1\uffff\1\145\1\162\1\145\2\uffff\1\156\1\146\1\162\1\164\1\123\1\146\1\60\1\160\1\123\1\uffff\1\145\1\160\1\143\1\145\1\60\1\143\1\uffff\1\60\1\uffff";
+    static final String DFA12_maxS =
+        "\1\uffff\1\162\1\157\2\172\1\165\3\172\1\171\1\151\1\162\1\145\1\uffff\1\151\1\164\1\157\2\uffff\1\151\1\163\1\162\1\164\1\156\2\151\1\157\1\151\1\164\1\154\1\116\1\157\1\uffff\1\157\1\163\1\157\2\172\1\uffff\1\162\2\157\1\141\2\uffff\1\154\1\156\1\157\1\172\2\uffff\2\uffff\1\57\2\uffff\1\165\1\uffff\1\154\1\162\1\157\1\164\1\160\1\uffff\1\165\1\144\1\uffff\1\156\2\155\1\170\1\uffff\1\125\1\uffff\1\156\1\uffff\1\164\1\141\1\164\1\162\1\157\1\162\1\164\1\uffff\1\164\2\163\1\162\1\165\1\156\1\146\1\162\2\uffff\1\162\1\125\1\164\1\171\1\157\1\170\1\165\2\164\1\163\1\156\1\171\1\165\1\154\1\141\1\146\1\145\1\161\1\157\1\164\1\144\1\164\1\163\1\106\1\141\1\163\1\uffff\1\156\1\151\1\145\1\156\1\165\3\uffff\1\141\1\162\1\151\1\157\1\151\2\uffff\1\157\1\116\1\160\5\uffff\1\145\1\146\1\163\2\167\1\116\1\151\1\145\1\141\1\172\3\145\1\111\1\164\1\172\2\145\1\156\1\163\1\153\1\141\1\164\2\146\1\167\1\141\1\154\1\164\1\151\1\145\1\164\1\165\1\162\1\164\1\162\1\164\1\172\1\162\1\164\1\160\1\141\2\145\1\163\1\164\1\123\1\172\1\145\1\141\1\143\1\145\1\153\1\145\1\164\1\165\1\172\1\164\1\145\1\165\1\162\1\160\1\145\1\162\1\151\1\106\1\164\1\163\1\144\1\164\1\163\2\164\2\144\1\164\1\156\1\153\1\164\1\160\1\164\1\167\1\157\2\172\1\146\1\145\1\141\1\172\1\157\1\164\1\162\1\164\1\uffff\1\172\1\163\1\172\1\162\1\164\1\157\1\110\1\uffff\1\162\1\163\1\143\1\120\1\145\1\155\1\141\1\145\1\157\1\151\2\157\1\172\1\157\1\151\1\166\1\143\1\141\1\143\1\153\1\164\1\167\1\143\1\151\1\162\1\145\1\uffff\1\151\1\165\1\172\1\162\1\146\1\162\1\151\1\157\1\165\1\uffff\1\162\1\123\1\162\1\143\1\163\1\162\2\145\1\uffff\1\167\1\144\1\145\1\164\1\101\1\162\1\145\1\157\1\106\1\141\1\164\1\145\1\163\1\172\1\164\1\151\1\172\1\120\1\157\1\145\1\146\1\163\1\154\1\124\2\101\1\122\1\144\2\uffff\1\151\1\172\1\162\1\172\1\157\1\uffff\1\144\1\171\2\151\1\uffff\1\172\1\uffff\1\147\1\145\1\160\1\157\1\151\1\120\1\150\1\145\1\164\1\163\1\147\1\163\1\143\1\170\2\162\1\145\1\154\1\151\1\156\1\uffff\1\171\1\156\1\145\1\164\1\156\1\164\1\163\1\172\1\141\1\145\1\147\1\157\1\143\1\145\1\141\1\uffff\1\162\1\141\1\156\2\143\1\160\1\155\1\154\2\145\1\164\1\172\2\163\1\172\1\141\1\125\1\156\1\101\1\143\1\156\1\163\1\156\1\106\1\164\1\141\1\162\1\144\1\172\1\uffff\1\141\1\156\1\uffff\1\162\1\155\1\172\1\151\1\155\1\157\1\151\2\143\1\157\1\145\1\143\1\uffff\1\144\1\uffff\1\165\1\145\1\101\1\155\1\157\1\uffff\1\163\1\162\1\163\1\160\1\143\1\145\1\101\1\162\1\163\1\172\1\141\1\163\1\157\1\172\1\155\1\153\1\156\1\141\1\172\1\151\1\145\1\141\1\162\1\151\1\143\1\165\1\172\1\164\1\uffff\1\162\1\123\1\165\1\154\1\164\1\163\1\154\1\151\1\165\1\141\1\172\1\141\1\157\1\160\1\145\1\141\1\162\1\164\1\151\1\uffff\2\172\1\uffff\1\162\1\156\2\143\1\164\1\141\2\163\1\154\1\145\1\164\1\163\1\117\1\uffff\1\156\1\165\1\157\1\126\1\122\1\uffff\1\143\1\151\1\141\1\155\2\164\1\165\2\172\1\151\1\164\1\120\1\144\1\145\1\156\1\172\1\141\2\172\1\127\1\162\1\143\1\123\1\120\1\162\1\145\1\uffff\1\164\1\151\1\154\1\uffff\1\141\1\124\1\164\1\156\1\145\1\164\1\144\1\164\1\171\1\157\1\145\1\162\1\uffff\1\141\1\145\1\157\1\162\1\160\1\163\1\172\1\116\1\145\1\154\1\143\1\uffff\2\154\1\157\1\144\1\156\1\151\1\145\1\157\2\uffff\1\145\1\151\1\145\1\164\1\151\1\164\2\172\1\157\1\111\1\145\1\114\1\156\1\164\1\157\1\164\1\141\1\145\1\123\1\164\1\144\1\145\2\151\1\164\1\uffff\1\157\1\uffff\1\156\2\145\1\144\1\156\1\172\1\uffff\1\164\2\uffff\1\154\1\157\1\123\1\164\2\145\1\157\1\156\1\151\1\156\1\172\2\156\1\162\1\164\1\157\1\162\2\145\1\172\1\114\1\117\1\151\1\107\1\156\1\172\1\145\1\164\1\172\1\146\1\141\1\154\1\157\1\172\1\uffff\1\157\1\151\1\144\1\164\1\145\1\116\1\163\1\162\1\151\2\145\1\106\1\156\1\103\1\164\1\101\1\151\1\157\2\151\1\163\2\uffff\1\167\1\101\1\165\1\104\1\145\1\172\1\114\1\165\1\157\1\162\1\160\1\157\1\101\2\172\2\157\1\145\1\165\1\147\1\163\2\162\1\164\1\uffff\1\151\1\157\1\162\1\145\1\151\1\143\1\162\1\143\1\147\1\157\1\147\1\172\1\uffff\1\143\1\146\1\141\1\162\1\156\1\157\1\162\1\172\1\uffff\1\145\1\156\1\157\1\165\1\163\1\uffff\1\172\1\145\1\141\1\uffff\2\164\1\141\1\156\1\uffff\1\164\1\144\1\156\1\102\1\172\1\163\1\157\1\151\1\122\1\164\1\141\1\164\1\141\1\120\1\163\1\165\1\172\1\157\1\172\1\143\1\157\1\156\2\166\2\172\1\124\1\162\1\165\1\156\1\uffff\2\157\1\163\1\143\1\151\1\157\1\165\1\143\2\uffff\2\156\1\172\1\162\1\114\1\172\1\146\1\145\1\120\1\157\1\167\1\153\1\143\1\157\1\172\1\123\1\145\1\164\1\156\1\114\1\156\1\uffff\1\145\1\162\1\146\1\165\1\146\1\164\1\116\1\uffff\1\156\1\172\1\156\1\141\1\172\1\uffff\1\172\1\171\1\167\1\151\1\156\1\154\1\167\1\145\1\153\1\171\1\uffff\1\160\1\172\1\145\1\164\1\144\1\156\1\145\1\141\1\171\1\145\1\164\1\145\1\172\1\156\1\uffff\1\155\1\uffff\1\164\1\156\1\172\2\145\2\uffff\1\172\1\141\1\162\1\147\1\165\1\156\1\106\1\157\1\141\1\163\1\162\1\164\2\172\1\uffff\1\143\2\141\1\uffff\1\123\1\163\1\141\1\156\1\172\1\154\1\172\1\156\1\uffff\1\145\1\163\1\150\1\104\2\141\1\144\1\172\1\141\1\146\1\143\1\151\1\157\1\141\1\154\1\147\1\uffff\1\123\1\162\2\uffff\1\145\1\141\1\157\2\145\1\157\3\172\1\145\1\uffff\1\146\1\167\1\145\1\153\1\160\1\143\1\145\1\144\1\145\1\162\1\uffff\1\143\1\160\1\151\1\172\1\uffff\1\116\1\156\1\uffff\1\164\1\141\1\164\1\142\1\147\1\165\1\154\1\142\1\151\1\143\1\151\2\uffff\1\145\1\164\1\156\1\160\1\163\1\162\1\163\1\uffff\1\157\1\uffff\1\172\1\143\1\163\1\172\1\145\1\164\1\156\1\123\1\uffff\1\163\1\151\1\164\1\147\1\143\1\155\2\164\1\157\1\144\1\141\2\162\1\156\1\172\1\163\1\162\1\uffff\1\145\2\uffff\1\145\1\172\1\157\2\172\1\157\1\153\1\162\1\102\1\116\1\146\1\164\2\157\1\uffff\1\141\1\102\1\151\1\164\1\150\1\154\1\126\1\156\1\123\1\154\1\164\1\145\1\157\1\163\1\145\1\144\1\145\1\172\1\141\1\172\1\141\1\uffff\1\172\1\151\1\uffff\1\154\1\145\1\144\2\164\1\143\2\165\1\157\1\145\1\116\1\150\1\146\1\144\1\156\1\163\1\145\1\172\1\uffff\1\163\1\153\1\162\1\144\1\uffff\1\162\1\uffff\1\145\1\uffff\1\163\2\172\1\141\1\157\1\123\1\151\2\156\1\155\1\171\1\157\1\151\1\172\1\145\1\141\1\143\1\164\1\145\1\157\1\172\1\156\1\172\1\156\1\167\1\143\1\uffff\1\155\1\uffff\1\144\1\uffff\1\156\1\141\1\156\1\167\1\141\1\162\1\172\2\162\1\154\1\172\1\141\1\172\1\164\1\162\1\164\1\104\1\103\1\uffff\1\172\1\111\1\146\1\172\1\153\1\162\1\151\2\uffff\1\156\1\144\1\160\1\157\1\145\1\172\1\145\1\172\1\156\1\157\1\uffff\1\126\1\162\1\164\1\141\1\172\1\162\1\uffff\1\172\1\uffff\1\143\1\151\3\172\1\147\1\171\1\143\1\151\1\143\1\165\1\uffff\1\145\1\141\1\172\1\uffff\1\155\1\uffff\1\167\3\145\1\157\1\uffff\1\156\1\123\1\uffff\1\111\1\146\1\164\1\144\2\145\2\156\1\uffff\1\163\1\uffff\1\172\1\156\1\141\2\151\1\143\1\uffff\1\171\1\uffff\1\171\1\144\3\uffff\1\124\1\172\1\171\1\144\1\153\1\143\1\172\1\164\1\uffff\1\145\1\141\1\163\1\145\1\154\1\155\1\164\1\160\1\156\1\123\1\157\1\167\1\120\1\143\1\172\1\164\1\172\1\uffff\1\172\1\162\1\141\1\157\1\153\2\172\1\164\1\151\1\uffff\1\172\1\164\1\163\1\164\1\uffff\1\151\1\172\1\162\1\163\1\144\1\141\1\160\2\145\1\164\1\160\1\162\1\151\1\145\1\172\1\uffff\1\172\2\uffff\1\151\1\142\1\156\1\172\2\uffff\1\150\1\155\1\uffff\1\150\1\172\1\165\1\157\1\uffff\2\145\1\172\1\171\1\157\1\162\1\143\2\145\1\171\1\144\1\162\2\uffff\1\141\1\154\1\172\1\uffff\1\120\1\145\1\122\1\uffff\1\162\1\156\1\103\1\163\1\uffff\1\172\1\156\1\146\1\172\1\162\1\143\1\172\1\164\1\146\1\142\1\145\1\uffff\2\120\1\172\2\145\1\172\1\157\1\172\1\uffff\1\145\1\141\1\uffff\1\146\1\172\1\uffff\1\150\1\123\1\154\1\172\2\123\1\uffff\1\161\1\172\1\uffff\1\155\1\uffff\1\156\1\143\1\141\1\uffff\1\172\1\160\1\145\1\uffff\2\172\1\120\1\uffff\1\160\1\164\1\145\1\143\1\uffff\1\145\1\172\2\uffff\1\123\1\157\2\172\1\145\1\143\1\uffff\1\172\1\156\1\uffff\1\145\1\uffff\2\172\1\uffff\1\145\1\162\1\145\2\uffff\1\156\1\146\1\162\1\164\1\123\1\146\1\172\1\160\1\123\1\uffff\1\145\1\160\1\143\1\145\1\172\1\143\1\uffff\1\172\1\uffff";
+    static final String DFA12_acceptS =
+        "\15\uffff\1\15\3\uffff\1\23\1\25\15\uffff\1\115\5\uffff\1\131\4\uffff\1\161\1\162\4\uffff\1\u0098\1\u0099\3\uffff\1\u009d\1\u009e\1\uffff\1\u0098\5\uffff\1\3\2\uffff\1\4\4\uffff\1\6\1\uffff\1\7\1\uffff\1\10\7\uffff\1\15\10\uffff\1\23\1\25\32\uffff\1\115\5\uffff\1\127\1\130\1\131\5\uffff\1\161\1\162\3\uffff\1\u0099\1\u009a\1\u009b\1\u009c\1\u009d\135\uffff\1\u0087\7\uffff\1\31\32\uffff\1\122\11\uffff\1\111\10\uffff\1\u008d\34\uffff\1\u008f\1\1\5\uffff\1\153\4\uffff\1\5\1\uffff\1\67\24\uffff\1\135\17\uffff\1\27\35\uffff\1\u0089\2\uffff\1\117\14\uffff\1\2\1\uffff\1\54\5\uffff\1\57\34\uffff\1\u0086\23\uffff\1\60\2\uffff\1\65\15\uffff\1\165\5\uffff\1\u0085\32\uffff\1\24\3\uffff\1\133\14\uffff\1\173\13\uffff\1\144\10\uffff\1\u0080\1\63\31\uffff\1\u008c\1\uffff\1\20\6\uffff\1\124\1\uffff\1\u0088\1\u0091\42\uffff\1\u0084\25\uffff\1\74\1\142\30\uffff\1\125\14\uffff\1\u0082\10\uffff\1\107\5\uffff\1\u008e\3\uffff\1\55\4\uffff\1\167\36\uffff\1\157\10\uffff\1\137\1\155\25\uffff\1\172\7\uffff\1\41\5\uffff\1\21\12\uffff\1\u0097\16\uffff\1\u008b\1\uffff\1\132\5\uffff\1\140\1\76\16\uffff\1\u008a\3\uffff\1\175\10\uffff\1\12\20\uffff\1\70\2\uffff\1\176\1\u0095\12\uffff\1\163\12\uffff\1\134\4\uffff\1\151\2\uffff\1\77\13\uffff\1\145\1\154\7\uffff\1\106\1\uffff\1\11\10\uffff\1\160\21\uffff\1\156\1\uffff\1\170\1\u0083\16\uffff\1\150\25\uffff\1\143\2\uffff\1\102\22\uffff\1\42\4\uffff\1\u0090\1\uffff\1\164\1\uffff\1\166\32\uffff\1\73\1\uffff\1\146\1\uffff\1\13\22\uffff\1\22\7\uffff\1\177\1\u0081\12\uffff\1\112\6\uffff\1\136\1\uffff\1\72\13\uffff\1\53\3\uffff\1\16\1\uffff\1\113\5\uffff\1\114\2\uffff\1\32\10\uffff\1\147\1\uffff\1\75\6\uffff\1\121\1\uffff\1\152\2\uffff\1\51\1\64\1\141\10\uffff\1\110\21\uffff\1\100\11\uffff\1\35\4\uffff\1\56\17\uffff\1\126\1\uffff\1\71\1\101\4\uffff\1\174\1\46\2\uffff\1\44\4\uffff\1\17\14\uffff\1\43\1\66\3\uffff\1\u0093\3\uffff\1\62\4\uffff\1\u0096\13\uffff\1\123\10\uffff\1\52\2\uffff\1\34\2\uffff\1\171\6\uffff\1\30\2\uffff\1\61\1\uffff\1\105\3\uffff\1\37\3\uffff\1\120\3\uffff\1\14\4\uffff\1\36\2\uffff\1\47\1\50\6\uffff\1\116\2\uffff\1\104\1\uffff\1\u0094\2\uffff\1\45\3\uffff\1\u0092\1\40\11\uffff\1\103\6\uffff\1\26\1\uffff\1\33";
+    static final String DFA12_specialS =
+        "\1\0\62\uffff\1\2\1\1\u0521\uffff}>";
+    static final String[] DFA12_transitionS = {
+            "\11\67\2\66\2\67\1\66\22\67\1\66\1\67\1\63\4\67\1\64\1\53\1\54\2\67\1\22\1\40\1\46\1\65\12\62\7\67\1\61\1\11\1\41\1\30\1\3\1\55\1\10\1\57\1\27\1\61\1\6\1\51\1\7\1\14\1\36\1\25\1\61\1\43\1\34\1\47\1\61\1\23\1\52\3\61\3\67\1\60\1\61\1\67\1\35\1\12\1\20\1\16\1\4\1\2\1\61\1\37\1\24\2\61\1\31\1\26\1\5\1\56\1\13\1\61\1\32\1\17\1\1\1\42\1\33\1\50\1\44\1\45\1\61\1\15\1\67\1\21\uff82\67",
+            "\1\70",
+            "\1\72\12\uffff\1\74\2\uffff\1\73",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\15\71\1\75\11\71\1\76\2\71",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\15\71\1\101\2\71\1\100\11\71",
+            "\1\104\3\uffff\1\106\11\uffff\1\103\5\uffff\1\105",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\23\71\1\110\6\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\4\71\1\112\25\71",
+            "\1\115\6\uffff\1\114",
+            "\1\116",
+            "\1\117\3\uffff\1\121\14\uffff\1\120",
+            "\1\122",
+            "",
+            "\1\124\3\uffff\1\125\3\uffff\1\126",
+            "\1\130\4\uffff\1\127",
+            "\1\133\2\uffff\1\132\12\uffff\1\131",
+            "",
+            "",
+            "\1\136",
+            "\1\140\4\uffff\1\137",
+            "\1\141\11\uffff\1\142",
+            "\1\143\22\uffff\1\144",
+            "\1\145",
+            "\1\146\7\uffff\1\147",
+            "\1\151\7\uffff\1\150",
+            "\1\152",
+            "\1\153\7\uffff\1\154",
+            "\1\157\11\uffff\1\155\1\156\3\uffff\1\160",
+            "\1\163\1\162\7\uffff\1\161",
+            "\1\165\7\uffff\1\164",
+            "\1\166\11\uffff\1\167",
+            "",
+            "\1\171",
+            "\1\172\4\uffff\1\173",
+            "\1\174\15\uffff\1\175",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\1\u0081",
+            "\1\u0083\15\uffff\1\u0082",
+            "\1\u0084",
+            "\1\u0085",
+            "",
+            "",
+            "\1\u0088",
+            "\1\u0089",
+            "\1\u008a",
+            "\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "",
+            "\0\u008c",
+            "\0\u008c",
+            "\1\u008d\4\uffff\1\u008e",
+            "",
+            "",
+            "\1\u0091\23\uffff\1\u0090",
+            "",
+            "\1\u0092",
+            "\1\u0093",
+            "\1\u0094",
+            "\1\u0095\17\uffff\1\u0096",
+            "\1\u0097",
+            "",
+            "\1\u0098",
+            "\1\u0099",
+            "",
+            "\1\u009b\11\uffff\1\u009a",
+            "\1\u009c",
+            "\1\u009d",
+            "\1\u009e",
+            "",
+            "\1\u009f",
+            "",
+            "\1\u00a0",
+            "",
+            "\1\u00a1",
+            "\1\u00a2",
+            "\1\u00a3",
+            "\1\u00a4\16\uffff\1\u00a5",
+            "\1\u00a7\11\uffff\1\u00a6",
+            "\1\u00a8",
+            "\1\u00a9",
+            "",
+            "\1\u00aa",
+            "\1\u00ad\3\uffff\1\u00ab\2\uffff\1\u00ac",
+            "\1\u00ae\1\u00af",
+            "\1\u00b1\20\uffff\1\u00b0",
+            "\1\u00b2\16\uffff\1\u00b3",
+            "\1\u00b4",
+            "\1\u00b5",
+            "\1\u00b6",
+            "",
+            "",
+            "\1\u00b7",
+            "\1\u00b9\1\u00ba\20\uffff\1\u00b8",
+            "\1\u00bb",
+            "\1\u00bc",
+            "\1\u00bd",
+            "\1\u00be",
+            "\1\u00bf",
+            "\1\u00c0",
+            "\1\u00c1",
+            "\1\u00c3\1\u00c2",
+            "\1\u00c4",
+            "\1\u00c5",
+            "\1\u00c6",
+            "\1\u00c7",
+            "\1\u00c8",
+            "\1\u00c9",
+            "\1\u00ca",
+            "\1\u00cb",
+            "\1\u00cc\15\uffff\1\u00cd",
+            "\1\u00ce",
+            "\1\u00cf",
+            "\1\u00d0",
+            "\1\u00d1\43\uffff\1\u00d2",
+            "\1\u00d3",
+            "\1\u00d4",
+            "\1\u00d6\2\uffff\1\u00d5",
+            "",
+            "\1\u00d7",
+            "\1\u00d8",
+            "\1\u00d9",
+            "\1\u00da",
+            "\1\u00db",
+            "",
+            "",
+            "",
+            "\1\u00dc",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\u00df",
+            "\1\u00e0",
+            "",
+            "",
+            "\1\u00e1",
+            "\1\u00e2",
+            "\1\u00e3",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00e4",
+            "\1\u00e5",
+            "\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "\1\u00e9",
+            "\1\u00ea",
+            "\1\u00eb",
+            "\1\u00ec",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u00ee",
+            "\1\u00ef",
+            "\1\u00f0",
+            "\1\u00f1\6\uffff\1\u00f3\1\u00f2",
+            "\1\u00f4",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u00f6",
+            "\1\u00f7",
+            "\1\u00f8",
+            "\1\u00f9",
+            "\1\u00fa",
+            "\1\u00fb",
+            "\1\u00fd\14\uffff\1\u00fc\3\uffff\1\u00fe",
+            "\1\u00ff",
+            "\1\u0100",
+            "\1\u0101",
+            "\1\u0102",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\u0105",
+            "\1\u0106",
+            "\1\u0107",
+            "\1\u0108",
+            "\1\u0109\16\uffff\1\u010a",
+            "\1\u010b",
+            "\1\u010c",
+            "\1\u010d\7\uffff\1\u010f\5\uffff\1\u010e",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0111",
+            "\1\u0112",
+            "\1\u0113",
+            "\1\u0114",
+            "\1\u0115",
+            "\1\u0116",
+            "\1\u0117",
+            "\1\u0118",
+            "\1\u0119",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u011b",
+            "\1\u011c",
+            "\1\u011d",
+            "\1\u011e",
+            "\1\u011f",
+            "\1\u0120",
+            "\1\u0121",
+            "\1\u0122",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0124",
+            "\1\u0125",
+            "\1\u0126",
+            "\1\u0127",
+            "\1\u0128",
+            "\1\u0129",
+            "\1\u012a",
+            "\1\u012b",
+            "\1\u012c",
+            "\1\u012d",
+            "\1\u012e",
+            "\1\u012f",
+            "\1\u0130",
+            "\1\u0131",
+            "\1\u0132\1\u0133",
+            "\1\u0134",
+            "\1\u0135",
+            "\1\u0136",
+            "\1\u0137",
+            "\1\u0138\7\uffff\1\u0139",
+            "\1\u013a",
+            "\1\u013b",
+            "\1\u013c",
+            "\1\u013d",
+            "\1\u013e",
+            "\1\u013f",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0142",
+            "\1\u0143",
+            "\1\u0144",
+            "\12\71\7\uffff\21\71\1\u0146\10\71\4\uffff\1\71\1\uffff\22\71\1\u0145\7\71",
+            "\1\u0148",
+            "\1\u0149",
+            "\1\u014a",
+            "\1\u014b",
+            "",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u014d",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u014f",
+            "\1\u0150",
+            "\1\u0151",
+            "\1\u0152",
+            "",
+            "\1\u0153",
+            "\1\u0154",
+            "\1\u0155",
+            "\1\u0156",
+            "\1\u0157",
+            "\1\u0158",
+            "\1\u0159",
+            "\1\u015a",
+            "\1\u015b",
+            "\1\u015c",
+            "\1\u015d",
+            "\1\u015e",
+            "\12\71\7\uffff\2\71\1\u015f\17\71\1\u0161\1\71\1\u0162\5\71\4\uffff\1\71\1\uffff\17\71\1\u0160\12\71",
+            "\1\u0164",
+            "\1\u0165",
+            "\1\u0166",
+            "\1\u0167",
+            "\1\u0168",
+            "\1\u0169",
+            "\1\u016a",
+            "\1\u016b",
+            "\1\u016c",
+            "\1\u016d",
+            "\1\u016e",
+            "\1\u016f",
+            "\1\u0170",
+            "",
+            "\1\u0171",
+            "\1\u0172",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0174",
+            "\1\u0175",
+            "\1\u0176",
+            "\1\u0177",
+            "\1\u0178",
+            "\1\u0179",
+            "",
+            "\1\u017a",
+            "\1\u017b\2\uffff\1\u017c",
+            "\1\u017d",
+            "\1\u017e",
+            "\1\u017f",
+            "\1\u0180",
+            "\1\u0181",
+            "\1\u0182",
+            "",
+            "\1\u0183",
+            "\1\u0184",
+            "\1\u0185",
+            "\1\u0186",
+            "\1\u0187",
+            "\1\u0188",
+            "\1\u0189",
+            "\1\u018a",
+            "\1\u018b",
+            "\1\u018c",
+            "\1\u018d",
+            "\1\u018e",
+            "\1\u018f\15\uffff\1\u0190",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0192",
+            "\1\u0193",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0195",
+            "\1\u0196",
+            "\1\u0197",
+            "\1\u0198",
+            "\1\u0199",
+            "\1\u019a",
+            "\1\u019b",
+            "\1\u019c",
+            "\1\u019d",
+            "\1\u019e",
+            "\1\u019f",
+            "",
+            "",
+            "\1\u01a0",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u01a2",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u01a4",
+            "",
+            "\1\u01a5",
+            "\1\u01a6",
+            "\1\u01a7",
+            "\1\u01a8",
+            "",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\1\u01aa",
+            "\1\u01ab",
+            "\1\u01ac",
+            "\1\u01ad",
+            "\1\u01ae",
+            "\1\u01af",
+            "\1\u01b0",
+            "\1\u01b1",
+            "\1\u01b2",
+            "\1\u01b3",
+            "\1\u01b4",
+            "\1\u01b5",
+            "\1\u01b6",
+            "\1\u01b7",
+            "\1\u01b8",
+            "\1\u01b9",
+            "\1\u01ba",
+            "\1\u01bb",
+            "\1\u01bc",
+            "\1\u01bd",
+            "",
+            "\1\u01be",
+            "\1\u01bf",
+            "\1\u01c0",
+            "\1\u01c1",
+            "\1\u01c2",
+            "\1\u01c3",
+            "\1\u01c4",
+            "\12\71\7\uffff\22\71\1\u01c5\7\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u01c7",
+            "\1\u01c8",
+            "\1\u01c9",
+            "\1\u01ca",
+            "\1\u01cb",
+            "\1\u01cc",
+            "\1\u01cd",
+            "",
+            "\1\u01ce",
+            "\1\u01cf",
+            "\1\u01d0\7\uffff\1\u01d1",
+            "\1\u01d2",
+            "\1\u01d3",
+            "\1\u01d4",
+            "\1\u01d5",
+            "\1\u01d6",
+            "\1\u01d7",
+            "\1\u01d8",
+            "\1\u01d9",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u01db",
+            "\1\u01dc",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u01de",
+            "\1\u01df",
+            "\1\u01e0",
+            "\1\u01e1",
+            "\1\u01e2",
+            "\1\u01e3",
+            "\1\u01e4",
+            "\1\u01e5",
+            "\1\u01e6",
+            "\1\u01e7",
+            "\1\u01e8",
+            "\1\u01e9",
+            "\1\u01ea",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\1\u01ec",
+            "\1\u01ed",
+            "",
+            "\1\u01ee",
+            "\1\u01ef",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\22\71\1\u01f0\7\71",
+            "\1\u01f2",
+            "\1\u01f3",
+            "\1\u01f4",
+            "\1\u01f5",
+            "\1\u01f6",
+            "\1\u01f7",
+            "\1\u01f8",
+            "\1\u01f9",
+            "\1\u01fa",
+            "",
+            "\1\u01fb",
+            "",
+            "\1\u01fc",
+            "\1\u01fd",
+            "\1\u01fe",
+            "\1\u01ff",
+            "\1\u0200",
+            "",
+            "\1\u0201",
+            "\1\u0202",
+            "\1\u0203",
+            "\1\u0204",
+            "\1\u0205",
+            "\1\u0206",
+            "\1\u0207",
+            "\1\u0208",
+            "\1\u020b\3\uffff\1\u020a\42\uffff\1\u0209",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u020d",
+            "\1\u020e",
+            "\1\u020f",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0211",
+            "\1\u0212",
+            "\1\u0213",
+            "\1\u0214",
+            "\1\u0215",
+            "\1\u0216",
+            "\1\u0217",
+            "\1\u0218",
+            "\1\u0219",
+            "\1\u021a",
+            "\1\u021b",
+            "\1\u021c",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u021e",
+            "",
+            "\1\u021f",
+            "\1\u0220",
+            "\1\u0221",
+            "\1\u0222",
+            "\1\u0223",
+            "\1\u0224",
+            "\1\u0225",
+            "\1\u0226",
+            "\1\u0227",
+            "\1\u0228",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u022a",
+            "\1\u022b",
+            "\1\u022c",
+            "\1\u022d",
+            "\1\u022e",
+            "\1\u022f",
+            "\1\u0230",
+            "\1\u0231",
+            "",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\1\u0234",
+            "\1\u0235",
+            "\1\u0236",
+            "\1\u0237",
+            "\1\u0238",
+            "\1\u0239",
+            "\1\u023a",
+            "\1\u023b",
+            "\1\u023c",
+            "\1\u023d",
+            "\1\u023e",
+            "\1\u023f",
+            "\1\u0240",
+            "",
+            "\1\u0241",
+            "\1\u0242",
+            "\1\u0243",
+            "\1\u0244",
+            "\1\u0245",
+            "",
+            "\1\u0246",
+            "\1\u0247",
+            "\1\u0248",
+            "\1\u0249",
+            "\1\u024a",
+            "\1\u024b",
+            "\1\u024c",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\22\71\1\u024e\7\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0250",
+            "\1\u0251",
+            "\1\u0252",
+            "\1\u0253",
+            "\1\u0254",
+            "\1\u0255",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0257",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u025a\20\uffff\1\u025b",
+            "\1\u025c",
+            "\1\u025d",
+            "\1\u025e",
+            "\1\u025f",
+            "\1\u0260",
+            "\1\u0261",
+            "",
+            "\1\u0262",
+            "\1\u0263",
+            "\1\u0264",
+            "",
+            "\1\u0265",
+            "\1\u0269\5\uffff\1\u0266\6\uffff\1\u026a\2\uffff\1\u0268\1\u0267",
+            "\1\u026b",
+            "\1\u026c",
+            "\1\u026d",
+            "\1\u026e",
+            "\1\u026f",
+            "\1\u0270",
+            "\1\u0271",
+            "\1\u0272",
+            "\1\u0273",
+            "\1\u0274",
+            "",
+            "\1\u0275",
+            "\1\u0276",
+            "\1\u0277",
+            "\1\u0278",
+            "\1\u0279",
+            "\1\u027a\11\uffff\1\u027b",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u027e\1\uffff\1\u027d",
+            "\1\u027f",
+            "\1\u0280",
+            "\1\u0281",
+            "",
+            "\1\u0282",
+            "\1\u0283",
+            "\1\u0284",
+            "\1\u0285",
+            "\1\u0286",
+            "\1\u0287",
+            "\1\u0288",
+            "\1\u0289",
+            "",
+            "",
+            "\1\u028a",
+            "\1\u028b",
+            "\1\u028c",
+            "\1\u028d",
+            "\1\u028e",
+            "\1\u028f",
+            "\12\71\7\uffff\6\71\1\u0290\23\71\4\uffff\1\71\1\uffff\4\71\1\u0291\25\71",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0294",
+            "\1\u0296\4\uffff\1\u0295",
+            "\1\u0297",
+            "\1\u0298",
+            "\1\u0299",
+            "\1\u029a",
+            "\1\u029b",
+            "\1\u029c",
+            "\1\u029d",
+            "\1\u029e",
+            "\1\u029f",
+            "\1\u02a0",
+            "\1\u02a1",
+            "\1\u02a2",
+            "\1\u02a3",
+            "\1\u02a4",
+            "\1\u02a5",
+            "",
+            "\1\u02a6",
+            "",
+            "\1\u02a7",
+            "\1\u02a8",
+            "\1\u02a9",
+            "\1\u02aa",
+            "\1\u02ab",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\1\u02ad",
+            "",
+            "",
+            "\1\u02ae",
+            "\1\u02af",
+            "\1\u02b0",
+            "\1\u02b1",
+            "\1\u02b2",
+            "\1\u02b3",
+            "\1\u02b4",
+            "\1\u02b5",
+            "\1\u02b6",
+            "\1\u02b7",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\22\71\1\u02b8\7\71",
+            "\1\u02ba",
+            "\1\u02bb",
+            "\1\u02bc",
+            "\1\u02bd",
+            "\1\u02be",
+            "\1\u02bf",
+            "\1\u02c0",
+            "\1\u02c1",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u02c3",
+            "\1\u02c4",
+            "\1\u02c5",
+            "\1\u02c6",
+            "\1\u02c7",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u02c9",
+            "\1\u02ca",
+            "\12\71\7\uffff\13\71\1\u02cb\16\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u02cd",
+            "\1\u02ce",
+            "\1\u02cf",
+            "\1\u02d0",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\1\u02d2\11\uffff\1\u02d3",
+            "\1\u02d4",
+            "\1\u02d5",
+            "\1\u02d6",
+            "\1\u02d7",
+            "\1\u02d9\1\uffff\1\u02d8",
+            "\1\u02dc\6\uffff\1\u02db\37\uffff\1\u02da",
+            "\1\u02dd",
+            "\1\u02de",
+            "\1\u02df",
+            "\1\u02e0",
+            "\1\u02e1",
+            "\1\u02e2",
+            "\1\u02e3",
+            "\1\u02e4",
+            "\1\u02e5",
+            "\1\u02e6",
+            "\1\u02e7",
+            "\1\u02e8",
+            "\1\u02e9",
+            "\1\u02ea",
+            "",
+            "",
+            "\1\u02eb",
+            "\1\u02ec",
+            "\1\u02ed",
+            "\1\u02ee",
+            "\1\u02ef",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u02f1\7\uffff\1\u02f2",
+            "\1\u02f3",
+            "\1\u02f4",
+            "\1\u02f5",
+            "\1\u02f6",
+            "\1\u02f7",
+            "\1\u02f8",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u02fb",
+            "\1\u02fc",
+            "\1\u02fd",
+            "\1\u02fe",
+            "\1\u02ff",
+            "\1\u0300",
+            "\1\u0301",
+            "\1\u0302",
+            "\1\u0303",
+            "",
+            "\1\u0304",
+            "\1\u0305",
+            "\1\u0306",
+            "\1\u0307",
+            "\1\u0308",
+            "\1\u0309",
+            "\1\u030a",
+            "\1\u030b",
+            "\1\u030c",
+            "\1\u030d",
+            "\1\u030e",
+            "\12\71\7\uffff\1\u030f\31\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\1\u0311",
+            "\1\u0312",
+            "\1\u0313",
+            "\1\u0314",
+            "\1\u0315",
+            "\1\u0316",
+            "\1\u0317",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\1\u0319",
+            "\1\u031a",
+            "\1\u031b",
+            "\1\u031c",
+            "\1\u031d",
+            "",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u031f",
+            "\1\u0320",
+            "",
+            "\1\u0321",
+            "\1\u0322",
+            "\1\u0323",
+            "\1\u0324",
+            "",
+            "\1\u0325",
+            "\1\u0326",
+            "\1\u0327",
+            "\1\u0328",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u032a\36\uffff\1\u032c\1\u032b",
+            "\1\u032d\11\uffff\1\u032e",
+            "\1\u032f",
+            "\1\u0330",
+            "\1\u0331",
+            "\1\u0332",
+            "\1\u0333",
+            "\1\u0334",
+            "\1\u0335",
+            "\1\u0336",
+            "\1\u0337",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0339",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u033b",
+            "\1\u033c",
+            "\1\u033d",
+            "\1\u033e",
+            "\1\u033f",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0342",
+            "\1\u0343",
+            "\1\u0344",
+            "\1\u0345",
+            "",
+            "\1\u0346",
+            "\1\u0347",
+            "\1\u0348",
+            "\1\u0349",
+            "\1\u034a",
+            "\1\u034b",
+            "\1\u034c",
+            "\1\u034d",
+            "",
+            "",
+            "\1\u034e",
+            "\1\u034f",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0351",
+            "\1\u0353\11\uffff\1\u0352",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0355",
+            "\1\u0356",
+            "\1\u0357",
+            "\1\u0358",
+            "\1\u0359",
+            "\1\u035a",
+            "\1\u035b",
+            "\1\u035c",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u035e",
+            "\1\u035f",
+            "\1\u0360",
+            "\1\u0361",
+            "\1\u0363\11\uffff\1\u0362",
+            "\1\u0364",
+            "",
+            "\1\u0365",
+            "\1\u0366",
+            "\1\u0367",
+            "\1\u0368",
+            "\1\u0369",
+            "\1\u036a",
+            "\1\u036c\14\uffff\1\u036b",
+            "",
+            "\1\u036d",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u036f",
+            "\1\u0370",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0373",
+            "\1\u0374",
+            "\1\u0375",
+            "\1\u0376",
+            "\1\u0377",
+            "\1\u0378",
+            "\1\u0379",
+            "\1\u037a",
+            "\1\u037b",
+            "",
+            "\1\u037c",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u037e",
+            "\1\u037f",
+            "\1\u0380",
+            "\1\u0381",
+            "\1\u0382",
+            "\1\u0383",
+            "\1\u0384",
+            "\1\u0385",
+            "\1\u0386",
+            "\1\u0387",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0389",
+            "",
+            "\1\u038a",
+            "",
+            "\1\u038b",
+            "\1\u038c",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u038e",
+            "\1\u038f",
+            "",
+            "",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0391",
+            "\1\u0392",
+            "\1\u0393",
+            "\1\u0394",
+            "\1\u0395",
+            "\1\u0396",
+            "\1\u0397",
+            "\1\u0398",
+            "\1\u0399",
+            "\1\u039a",
+            "\1\u039b",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\1\u039e",
+            "\1\u039f",
+            "\1\u03a0",
+            "",
+            "\1\u03a1",
+            "\1\u03a2",
+            "\1\u03a3",
+            "\1\u03a4",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u03a6",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u03a8",
+            "",
+            "\1\u03a9",
+            "\1\u03aa",
+            "\1\u03ab",
+            "\1\u03ac",
+            "\1\u03ad",
+            "\1\u03ae",
+            "\1\u03af",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u03b1",
+            "\1\u03b2",
+            "\1\u03b3",
+            "\1\u03b4",
+            "\1\u03b5",
+            "\1\u03b6",
+            "\1\u03b7",
+            "\1\u03b8",
+            "",
+            "\1\u03ba\21\uffff\1\u03b9",
+            "\1\u03bb",
+            "",
+            "",
+            "\1\u03bc",
+            "\1\u03bd",
+            "\1\u03be",
+            "\1\u03bf",
+            "\1\u03c0",
+            "\1\u03c1",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\17\71\1\u03c3\12\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u03c6",
+            "",
+            "\1\u03c7",
+            "\1\u03c8",
+            "\1\u03c9",
+            "\1\u03ca",
+            "\1\u03cb",
+            "\1\u03cc",
+            "\1\u03cd",
+            "\1\u03ce",
+            "\1\u03cf",
+            "\1\u03d0",
+            "",
+            "\1\u03d1",
+            "\1\u03d2",
+            "\1\u03d3",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\1\u03d5",
+            "\1\u03d6",
+            "",
+            "\1\u03d7",
+            "\1\u03d8",
+            "\1\u03d9",
+            "\1\u03da",
+            "\1\u03db",
+            "\1\u03dc",
+            "\1\u03dd",
+            "\1\u03de",
+            "\1\u03df",
+            "\1\u03e0",
+            "\1\u03e1",
+            "",
+            "",
+            "\1\u03e2",
+            "\1\u03e3",
+            "\1\u03e4",
+            "\1\u03e5",
+            "\1\u03e6",
+            "\1\u03e7",
+            "\1\u03e8",
+            "",
+            "\1\u03e9",
+            "",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u03eb",
+            "\1\u03ec",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u03ee",
+            "\1\u03ef",
+            "\1\u03f0",
+            "\1\u03f1",
+            "",
+            "\1\u03f2",
+            "\1\u03f3",
+            "\1\u03f4",
+            "\1\u03f5",
+            "\1\u03f6",
+            "\1\u03f7",
+            "\1\u03f8",
+            "\1\u03f9",
+            "\1\u03fa",
+            "\1\u03fb",
+            "\1\u03fc",
+            "\1\u03fd",
+            "\1\u03fe",
+            "\1\u03ff",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0401",
+            "\1\u0402",
+            "",
+            "\1\u0403",
+            "",
+            "",
+            "\1\u0404",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0406",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\17\71\1\u0408\12\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u040a",
+            "\1\u040b",
+            "\1\u040c",
+            "\1\u040d",
+            "\1\u040e",
+            "\1\u040f",
+            "\1\u0410",
+            "\1\u0411",
+            "\1\u0412",
+            "",
+            "\1\u0413",
+            "\1\u0414",
+            "\1\u0415",
+            "\1\u0416",
+            "\1\u0417",
+            "\1\u0418",
+            "\1\u0419",
+            "\1\u041a",
+            "\1\u041b",
+            "\1\u041c",
+            "\1\u041d",
+            "\1\u041e",
+            "\1\u041f",
+            "\1\u0420",
+            "\1\u0421",
+            "\1\u0422",
+            "\1\u0423",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0425",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0427",
+            "",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0429",
+            "",
+            "\1\u042a",
+            "\1\u042b",
+            "\1\u042c",
+            "\1\u042d",
+            "\1\u042e",
+            "\1\u042f",
+            "\1\u0430",
+            "\1\u0431",
+            "\1\u0432",
+            "\1\u0433",
+            "\1\u0434",
+            "\1\u0435",
+            "\1\u0436",
+            "\1\u0437",
+            "\1\u0438",
+            "\1\u0439",
+            "\1\u043a",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\1\u043c",
+            "\1\u043d",
+            "\1\u043e",
+            "\1\u043f",
+            "",
+            "\1\u0440",
+            "",
+            "\1\u0441",
+            "",
+            "\1\u0442",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0445",
+            "\1\u0446",
+            "\1\u0447",
+            "\1\u0448",
+            "\1\u0449",
+            "\1\u044a",
+            "\1\u044b",
+            "\1\u044c",
+            "\1\u044d",
+            "\1\u044e",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0450",
+            "\1\u0451",
+            "\1\u0452",
+            "\1\u0453",
+            "\1\u0454",
+            "\1\u0455",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0457",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0459",
+            "\1\u045a",
+            "\1\u045b",
+            "",
+            "\1\u045c",
+            "",
+            "\1\u045d",
+            "",
+            "\1\u045e",
+            "\1\u045f",
+            "\1\u0460",
+            "\1\u0461",
+            "\1\u0462",
+            "\1\u0463",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0465",
+            "\1\u0466",
+            "\1\u0467",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0469",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u046b",
+            "\1\u046c",
+            "\1\u046d",
+            "\1\u046e",
+            "\1\u046f",
+            "",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0471",
+            "\1\u0472",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0474",
+            "\1\u0475",
+            "\1\u0476",
+            "",
+            "",
+            "\1\u0477",
+            "\1\u0478",
+            "\1\u0479",
+            "\1\u047a",
+            "\1\u047b",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u047d",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u047f",
+            "\1\u0480",
+            "",
+            "\1\u0481",
+            "\1\u0482",
+            "\1\u0483",
+            "\1\u0484",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0486",
+            "",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\1\u0488",
+            "\1\u0489",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u048d",
+            "\1\u048e",
+            "\1\u048f",
+            "\1\u0490",
+            "\1\u0491",
+            "\1\u0492",
+            "",
+            "\1\u0493",
+            "\1\u0494",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\1\u0496",
+            "",
+            "\1\u0497",
+            "\1\u0498",
+            "\1\u0499",
+            "\1\u049a",
+            "\1\u049b",
+            "",
+            "\1\u049c",
+            "\1\u049d",
+            "",
+            "\1\u049e",
+            "\1\u049f",
+            "\1\u04a0",
+            "\1\u04a1",
+            "\1\u04a2",
+            "\1\u04a3",
+            "\1\u04a4",
+            "\1\u04a5",
+            "",
+            "\1\u04a6",
+            "",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u04a8",
+            "\1\u04a9",
+            "\1\u04aa",
+            "\1\u04ab",
+            "\1\u04ac",
+            "",
+            "\1\u04ad",
+            "",
+            "\1\u04ae",
+            "\1\u04af",
+            "",
+            "",
+            "",
+            "\1\u04b0",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u04b2",
+            "\1\u04b3",
+            "\1\u04b4",
+            "\1\u04b5",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u04b7",
+            "",
+            "\1\u04b8",
+            "\1\u04b9",
+            "\1\u04ba",
+            "\1\u04bb",
+            "\1\u04bc",
+            "\1\u04bd",
+            "\1\u04be",
+            "\1\u04bf",
+            "\1\u04c0",
+            "\1\u04c1",
+            "\1\u04c2",
+            "\1\u04c3",
+            "\1\u04c4",
+            "\1\u04c5",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u04c7",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u04ca",
+            "\1\u04cb",
+            "\1\u04cc",
+            "\1\u04cd",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u04d0",
+            "\1\u04d1",
+            "",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u04d3",
+            "\1\u04d4",
+            "\1\u04d5",
+            "",
+            "\1\u04d6",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u04d8",
+            "\1\u04d9",
+            "\1\u04da",
+            "\1\u04db",
+            "\1\u04dc",
+            "\1\u04dd",
+            "\1\u04de",
+            "\1\u04df",
+            "\1\u04e0",
+            "\1\u04e1",
+            "\1\u04e2",
+            "\1\u04e3",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "",
+            "\1\u04e6",
+            "\1\u04e7",
+            "\1\u04e8",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "",
+            "\1\u04ea",
+            "\1\u04eb",
+            "",
+            "\1\u04ec",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u04ee",
+            "\1\u04ef",
+            "",
+            "\1\u04f0",
+            "\1\u04f1",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u04f3",
+            "\1\u04f4",
+            "\1\u04f5",
+            "\1\u04f6",
+            "\1\u04f7",
+            "\1\u04f8",
+            "\1\u04f9",
+            "\1\u04fa",
+            "\1\u04fb",
+            "",
+            "",
+            "\1\u04fc",
+            "\1\u04fd",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\1\u0500\15\uffff\1\u04ff",
+            "\1\u0501",
+            "\1\u0502",
+            "",
+            "\1\u0503",
+            "\1\u0504",
+            "\1\u0505",
+            "\1\u0506",
+            "",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0508",
+            "\1\u0509",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u050b",
+            "\1\u050c",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u050e",
+            "\1\u050f",
+            "\1\u0510",
+            "\1\u0511",
+            "",
+            "\1\u0512",
+            "\1\u0513",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0515",
+            "\1\u0516",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0518",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\1\u051a",
+            "\1\u051b",
+            "",
+            "\1\u051c",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\1\u051e",
+            "\1\u051f",
+            "\1\u0520",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0522",
+            "\1\u0523",
+            "",
+            "\1\u0524",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\1\u0526",
+            "",
+            "\1\u0527",
+            "\1\u0528",
+            "\1\u0529",
+            "",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u052b",
+            "\1\u052c",
+            "",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u052f",
+            "",
+            "\1\u0530",
+            "\1\u0531",
+            "\1\u0532",
+            "\1\u0533",
+            "",
+            "\1\u0534",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "",
+            "\1\u0536",
+            "\1\u0537",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\17\71\1\u0539\12\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u053b",
+            "\1\u053c",
+            "",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u053e",
+            "",
+            "\1\u053f",
+            "",
+            "\12\71\7\uffff\17\71\1\u0540\12\71\4\uffff\1\71\1\uffff\32\71",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "",
+            "\1\u0543",
+            "\1\u0544",
+            "\1\u0545",
+            "",
+            "",
+            "\1\u0546",
+            "\1\u0547",
+            "\1\u0548",
+            "\1\u0549",
+            "\1\u054a",
+            "\1\u054b",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u054d",
+            "\1\u054e",
+            "",
+            "\1\u054f",
+            "\1\u0550",
+            "\1\u0551",
+            "\1\u0552",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            "\1\u0554",
+            "",
+            "\12\71\7\uffff\32\71\4\uffff\1\71\1\uffff\32\71",
+            ""
+    };
+
+    static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
+    static final short[] DFA12_eof = DFA.unpackEncodedString(DFA12_eofS);
+    static final char[] DFA12_min = DFA.unpackEncodedStringToUnsignedChars(DFA12_minS);
+    static final char[] DFA12_max = DFA.unpackEncodedStringToUnsignedChars(DFA12_maxS);
+    static final short[] DFA12_accept = DFA.unpackEncodedString(DFA12_acceptS);
+    static final short[] DFA12_special = DFA.unpackEncodedString(DFA12_specialS);
+    static final short[][] DFA12_transition;
+
+    static {
+        int numStates = DFA12_transitionS.length;
+        DFA12_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA12_transition[i] = DFA.unpackEncodedString(DFA12_transitionS[i]);
+        }
+    }
+
+    static class DFA12 extends DFA {
+
+        public DFA12(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 12;
+            this.eot = DFA12_eot;
+            this.eof = DFA12_eof;
+            this.min = DFA12_min;
+            this.max = DFA12_max;
+            this.accept = DFA12_accept;
+            this.special = DFA12_special;
+            this.transition = DFA12_transition;
+        }
+        public String getDescription() {
+            return "1:1: Tokens : ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | T__158 | T__159 | T__160 | T__161 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            IntStream input = _input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA12_0 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA12_0=='t') ) {s = 1;}
+
+                        else if ( (LA12_0=='f') ) {s = 2;}
+
+                        else if ( (LA12_0=='E') ) {s = 3;}
+
+                        else if ( (LA12_0=='e') ) {s = 4;}
+
+                        else if ( (LA12_0=='n') ) {s = 5;}
+
+                        else if ( (LA12_0=='K') ) {s = 6;}
+
+                        else if ( (LA12_0=='M') ) {s = 7;}
+
+                        else if ( (LA12_0=='G') ) {s = 8;}
+
+                        else if ( (LA12_0=='B') ) {s = 9;}
+
+                        else if ( (LA12_0=='b') ) {s = 10;}
+
+                        else if ( (LA12_0=='p') ) {s = 11;}
+
+                        else if ( (LA12_0=='N') ) {s = 12;}
+
+                        else if ( (LA12_0=='{') ) {s = 13;}
+
+                        else if ( (LA12_0=='d') ) {s = 14;}
+
+                        else if ( (LA12_0=='s') ) {s = 15;}
+
+                        else if ( (LA12_0=='c') ) {s = 16;}
+
+                        else if ( (LA12_0=='}') ) {s = 17;}
+
+                        else if ( (LA12_0==',') ) {s = 18;}
+
+                        else if ( (LA12_0=='V') ) {s = 19;}
+
+                        else if ( (LA12_0=='i') ) {s = 20;}
+
+                        else if ( (LA12_0=='P') ) {s = 21;}
+
+                        else if ( (LA12_0=='m') ) {s = 22;}
+
+                        else if ( (LA12_0=='I') ) {s = 23;}
+
+                        else if ( (LA12_0=='D') ) {s = 24;}
+
+                        else if ( (LA12_0=='l') ) {s = 25;}
+
+                        else if ( (LA12_0=='r') ) {s = 26;}
+
+                        else if ( (LA12_0=='v') ) {s = 27;}
+
+                        else if ( (LA12_0=='S') ) {s = 28;}
+
+                        else if ( (LA12_0=='a') ) {s = 29;}
+
+                        else if ( (LA12_0=='O') ) {s = 30;}
+
+                        else if ( (LA12_0=='h') ) {s = 31;}
+
+                        else if ( (LA12_0=='-') ) {s = 32;}
+
+                        else if ( (LA12_0=='C') ) {s = 33;}
+
+                        else if ( (LA12_0=='u') ) {s = 34;}
+
+                        else if ( (LA12_0=='R') ) {s = 35;}
+
+                        else if ( (LA12_0=='x') ) {s = 36;}
+
+                        else if ( (LA12_0=='y') ) {s = 37;}
+
+                        else if ( (LA12_0=='.') ) {s = 38;}
+
+                        else if ( (LA12_0=='T') ) {s = 39;}
+
+                        else if ( (LA12_0=='w') ) {s = 40;}
+
+                        else if ( (LA12_0=='L') ) {s = 41;}
+
+                        else if ( (LA12_0=='W') ) {s = 42;}
+
+                        else if ( (LA12_0=='(') ) {s = 43;}
+
+                        else if ( (LA12_0==')') ) {s = 44;}
+
+                        else if ( (LA12_0=='F') ) {s = 45;}
+
+                        else if ( (LA12_0=='o') ) {s = 46;}
+
+                        else if ( (LA12_0=='H') ) {s = 47;}
+
+                        else if ( (LA12_0=='^') ) {s = 48;}
+
+                        else if ( (LA12_0=='A'||LA12_0=='J'||LA12_0=='Q'||LA12_0=='U'||(LA12_0>='X' && LA12_0<='Z')||LA12_0=='_'||LA12_0=='g'||(LA12_0>='j' && LA12_0<='k')||LA12_0=='q'||LA12_0=='z') ) {s = 49;}
+
+                        else if ( ((LA12_0>='0' && LA12_0<='9')) ) {s = 50;}
+
+                        else if ( (LA12_0=='\"') ) {s = 51;}
+
+                        else if ( (LA12_0=='\'') ) {s = 52;}
+
+                        else if ( (LA12_0=='/') ) {s = 53;}
+
+                        else if ( ((LA12_0>='\t' && LA12_0<='\n')||LA12_0=='\r'||LA12_0==' ') ) {s = 54;}
+
+                        else if ( ((LA12_0>='\u0000' && LA12_0<='\b')||(LA12_0>='\u000B' && LA12_0<='\f')||(LA12_0>='\u000E' && LA12_0<='\u001F')||LA12_0=='!'||(LA12_0>='#' && LA12_0<='&')||(LA12_0>='*' && LA12_0<='+')||(LA12_0>=':' && LA12_0<='@')||(LA12_0>='[' && LA12_0<=']')||LA12_0=='`'||LA12_0=='|'||(LA12_0>='~' && LA12_0<='\uFFFF')) ) {s = 55;}
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA12_52 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA12_52>='\u0000' && LA12_52<='\uFFFF')) ) {s = 140;}
+
+                        else s = 55;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA12_51 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA12_51>='\u0000' && LA12_51<='\uFFFF')) ) {s = 140;}
+
+                        else s = 55;
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 12, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
\ No newline at end of file
diff --git a/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextParser.java b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextParser.java
new file mode 100644
index 00000000..f7426f13
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNITextParser.java
@@ -0,0 +1,82618 @@
+package tools.descatres.dml.dni.text.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import tools.descatres.dml.dni.text.services.DNITextGrammarAccess;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalDNITextParser extends AbstractInternalContentAssistParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'true'", "'false'", "'E'", "'e'", "'none'", "'K'", "'M'", "'G'", "'BytesPerSec'", "'bitsPerSec'", "'packetsPerSec'", "'NetworkInfrastructure'", "'{'", "'dataCenterName'", "'dataCenterAltName'", "'traffic'", "'structure'", "'configuration'", "'}'", "'params'", "','", "'VirtualNetworkInterfacePerfSpec'", "'isUp'", "'packetProcessingTime'", "'MTU'", "'interfaceSpeed'", "'PhysicalNetworkInterfacePerfSpec'", "'VirtualLinkPerfSpec'", "'propagationDelay'", "'maxSupportedBandwidth'", "'PhysicalLinkPerfSpec'", "'IntermediateNodePerfSpec'", "'dataplane'", "'controlplane'", "'DataPlanePerfSpec'", "'processingLatency'", "'processingBandwidthReqPS'", "'forwardingLatency'", "'forwardingBandwidthPPS'", "'forwardingBandwidthBPS'", "'EndNodePerfSpec'", "'softwareLayersDelay'", "'NetworkTraffic'", "'flows'", "'software'", "'NetworkStructure'", "'nodes'", "'links'", "'NetworkConfiguration'", "'protocolsAndStacks'", "'routes'", "'ExperimentParam'", "'value'", "'SoftwareComponent'", "'name'", "'deployedOn'", "'alternativeNames'", "'trafficSources'", "'EntityAddress'", "'address'", "'addressGivenBy'", "'ONOFFFlow'", "'ONstateIAT'", "'ONstateDuration'", "'OFFstateDuration'", "'packetLength'", "'destinationSoftwareComponent'", "'sourceSoftwareComponent'", "'destinationAddresses'", "'GenericFlow'", "'dataSize'", "'NetworkProtocol'", "'mtu'", "'headersLength'", "'dataUnitLength'", "'connectionless'", "'-'", "'ConstantDoubleVariable'", "'unit'", "'ConstantLongVariable'", "'RandomVariable'", "'cdf'", "'ContinuousFunction'", "'numArgs'", "'equation'", "'DiscreteFunction'", "'x'", "'y'", "'.'", "'SpeedUnit'", "'prefix'", "'DataSeries'", "'data'", "'TrafficSource'", "'workload'", "'addresses'", "'GenericWorkload'", "'actions'", "'BranchAction'", "'intern'", "'LoopAction'", "'numIterations'", "'SequenceAction'", "'StartAction'", "'StopAction'", "'TransmitAction'", "'flow'", "'WaitAction'", "'waitTime'", "'VirtualNode'", "'hostedOn'", "'performance'", "'('", "')'", "'interfaces'", "'PhysicalNode'", "'hosts'", "'PhysicalLink'", "'connects'", "'VirtualLink'", "'ProtocolsRepository'", "'protocols'", "'stacks'", "'RoutesRepository'", "'flowRoutes'", "'directions'", "'ProtocolStack'", "'layers'", "'ProtocolLayer'", "'protocol'", "'isCarriedBy'", "'carries'", "'Route'", "'start'", "'end'", "'numHops'", "'hops'", "'FlowRoute'", "'Direction'", "'onNode'", "'via'", "'distance'", "'Hop'", "'interfaceref'", "'nextHop'", "'PhysicalNetworkInterface'", "'usedProtocolStack'", "'VirtualNetworkInterface'", "'startState'", "'deliveryGuaranteed'", "'isDefault'"
+    };
+    public static final int RULE_ID=5;
+    public static final int T__29=29;
+    public static final int T__28=28;
+    public static final int T__159=159;
+    public static final int T__27=27;
+    public static final int T__158=158;
+    public static final int T__26=26;
+    public static final int T__25=25;
+    public static final int T__24=24;
+    public static final int T__23=23;
+    public static final int T__22=22;
+    public static final int RULE_ANY_OTHER=10;
+    public static final int T__21=21;
+    public static final int T__20=20;
+    public static final int T__160=160;
+    public static final int EOF=-1;
+    public static final int T__161=161;
+    public static final int T__93=93;
+    public static final int T__19=19;
+    public static final int T__94=94;
+    public static final int T__91=91;
+    public static final int T__92=92;
+    public static final int T__148=148;
+    public static final int T__16=16;
+    public static final int T__147=147;
+    public static final int T__15=15;
+    public static final int T__90=90;
+    public static final int T__18=18;
+    public static final int T__149=149;
+    public static final int T__17=17;
+    public static final int T__12=12;
+    public static final int T__11=11;
+    public static final int T__14=14;
+    public static final int T__13=13;
+    public static final int T__154=154;
+    public static final int T__155=155;
+    public static final int T__156=156;
+    public static final int T__157=157;
+    public static final int T__99=99;
+    public static final int T__150=150;
+    public static final int T__98=98;
+    public static final int T__151=151;
+    public static final int T__97=97;
+    public static final int T__152=152;
+    public static final int T__96=96;
+    public static final int T__153=153;
+    public static final int T__95=95;
+    public static final int T__139=139;
+    public static final int T__138=138;
+    public static final int T__137=137;
+    public static final int T__136=136;
+    public static final int T__80=80;
+    public static final int T__81=81;
+    public static final int T__82=82;
+    public static final int T__83=83;
+    public static final int T__141=141;
+    public static final int T__85=85;
+    public static final int T__142=142;
+    public static final int T__84=84;
+    public static final int T__87=87;
+    public static final int T__140=140;
+    public static final int T__86=86;
+    public static final int T__145=145;
+    public static final int T__89=89;
+    public static final int T__146=146;
+    public static final int T__88=88;
+    public static final int RULE_ML_COMMENT=7;
+    public static final int T__143=143;
+    public static final int T__144=144;
+    public static final int T__126=126;
+    public static final int T__125=125;
+    public static final int T__128=128;
+    public static final int RULE_STRING=4;
+    public static final int T__127=127;
+    public static final int T__71=71;
+    public static final int T__129=129;
+    public static final int T__72=72;
+    public static final int T__70=70;
+    public static final int T__76=76;
+    public static final int T__75=75;
+    public static final int T__130=130;
+    public static final int T__74=74;
+    public static final int T__131=131;
+    public static final int T__73=73;
+    public static final int T__132=132;
+    public static final int T__133=133;
+    public static final int T__79=79;
+    public static final int T__134=134;
+    public static final int T__78=78;
+    public static final int T__135=135;
+    public static final int T__77=77;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__66=66;
+    public static final int T__67=67;
+    public static final int T__64=64;
+    public static final int T__65=65;
+    public static final int T__62=62;
+    public static final int T__63=63;
+    public static final int T__118=118;
+    public static final int T__119=119;
+    public static final int T__116=116;
+    public static final int T__117=117;
+    public static final int T__114=114;
+    public static final int T__115=115;
+    public static final int T__124=124;
+    public static final int T__123=123;
+    public static final int T__122=122;
+    public static final int T__121=121;
+    public static final int T__120=120;
+    public static final int T__61=61;
+    public static final int T__60=60;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__52=52;
+    public static final int T__53=53;
+    public static final int T__54=54;
+    public static final int T__107=107;
+    public static final int T__108=108;
+    public static final int T__109=109;
+    public static final int T__103=103;
+    public static final int T__59=59;
+    public static final int T__104=104;
+    public static final int T__105=105;
+    public static final int T__106=106;
+    public static final int T__111=111;
+    public static final int T__110=110;
+    public static final int RULE_INT=6;
+    public static final int T__113=113;
+    public static final int T__112=112;
+    public static final int T__50=50;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__102=102;
+    public static final int T__101=101;
+    public static final int T__100=100;
+    public static final int RULE_SL_COMMENT=8;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int RULE_WS=9;
+
+    // delegates
+    // delegators
+
+
+        public InternalDNITextParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalDNITextParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalDNITextParser.tokenNames; }
+    public String getGrammarFileName() { return "../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g"; }
+
+
+     
+     	private DNITextGrammarAccess grammarAccess;
+     	
+        public void setGrammarAccess(DNITextGrammarAccess grammarAccess) {
+        	this.grammarAccess = grammarAccess;
+        }
+        
+        @Override
+        protected Grammar getGrammar() {
+        	return grammarAccess.getGrammar();
+        }
+        
+        @Override
+        protected String getValueForTokenName(String tokenName) {
+        	return tokenName;
+        }
+
+
+
+
+    // $ANTLR start "entryRuleNetworkInfrastructure"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:60:1: entryRuleNetworkInfrastructure : ruleNetworkInfrastructure EOF ;
+    public final void entryRuleNetworkInfrastructure() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:61:1: ( ruleNetworkInfrastructure EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:62:1: ruleNetworkInfrastructure EOF
+            {
+             before(grammarAccess.getNetworkInfrastructureRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleNetworkInfrastructure_in_entryRuleNetworkInfrastructure61);
+            ruleNetworkInfrastructure();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkInfrastructureRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNetworkInfrastructure68); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleNetworkInfrastructure"
+
+
+    // $ANTLR start "ruleNetworkInfrastructure"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:69:1: ruleNetworkInfrastructure : ( ( rule__NetworkInfrastructure__Group__0 ) ) ;
+    public final void ruleNetworkInfrastructure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:73:2: ( ( ( rule__NetworkInfrastructure__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:74:1: ( ( rule__NetworkInfrastructure__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:74:1: ( ( rule__NetworkInfrastructure__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:75:1: ( rule__NetworkInfrastructure__Group__0 )
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:76:1: ( rule__NetworkInfrastructure__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:76:2: rule__NetworkInfrastructure__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__0_in_ruleNetworkInfrastructure94);
+            rule__NetworkInfrastructure__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkInfrastructureAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleNetworkInfrastructure"
+
+
+    // $ANTLR start "entryRuleFlow"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:88:1: entryRuleFlow : ruleFlow EOF ;
+    public final void entryRuleFlow() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:89:1: ( ruleFlow EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:90:1: ruleFlow EOF
+            {
+             before(grammarAccess.getFlowRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleFlow_in_entryRuleFlow121);
+            ruleFlow();
+
+            state._fsp--;
+
+             after(grammarAccess.getFlowRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFlow128); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFlow"
+
+
+    // $ANTLR start "ruleFlow"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:97:1: ruleFlow : ( ( rule__Flow__Alternatives ) ) ;
+    public final void ruleFlow() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:101:2: ( ( ( rule__Flow__Alternatives ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:102:1: ( ( rule__Flow__Alternatives ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:102:1: ( ( rule__Flow__Alternatives ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:103:1: ( rule__Flow__Alternatives )
+            {
+             before(grammarAccess.getFlowAccess().getAlternatives()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:104:1: ( rule__Flow__Alternatives )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:104:2: rule__Flow__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Flow__Alternatives_in_ruleFlow154);
+            rule__Flow__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFlowAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFlow"
+
+
+    // $ANTLR start "entryRuleNode"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:116:1: entryRuleNode : ruleNode EOF ;
+    public final void entryRuleNode() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:117:1: ( ruleNode EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:118:1: ruleNode EOF
+            {
+             before(grammarAccess.getNodeRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleNode_in_entryRuleNode181);
+            ruleNode();
+
+            state._fsp--;
+
+             after(grammarAccess.getNodeRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNode188); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleNode"
+
+
+    // $ANTLR start "ruleNode"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:125:1: ruleNode : ( ( rule__Node__Alternatives ) ) ;
+    public final void ruleNode() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:129:2: ( ( ( rule__Node__Alternatives ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:130:1: ( ( rule__Node__Alternatives ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:130:1: ( ( rule__Node__Alternatives ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:131:1: ( rule__Node__Alternatives )
+            {
+             before(grammarAccess.getNodeAccess().getAlternatives()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:132:1: ( rule__Node__Alternatives )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:132:2: rule__Node__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Node__Alternatives_in_ruleNode214);
+            rule__Node__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNodeAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleNode"
+
+
+    // $ANTLR start "entryRuleLink"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:144:1: entryRuleLink : ruleLink EOF ;
+    public final void entryRuleLink() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:145:1: ( ruleLink EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:146:1: ruleLink EOF
+            {
+             before(grammarAccess.getLinkRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleLink_in_entryRuleLink241);
+            ruleLink();
+
+            state._fsp--;
+
+             after(grammarAccess.getLinkRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLink248); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleLink"
+
+
+    // $ANTLR start "ruleLink"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:153:1: ruleLink : ( ( rule__Link__Alternatives ) ) ;
+    public final void ruleLink() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:157:2: ( ( ( rule__Link__Alternatives ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:158:1: ( ( rule__Link__Alternatives ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:158:1: ( ( rule__Link__Alternatives ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:159:1: ( rule__Link__Alternatives )
+            {
+             before(grammarAccess.getLinkAccess().getAlternatives()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:160:1: ( rule__Link__Alternatives )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:160:2: rule__Link__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Link__Alternatives_in_ruleLink274);
+            rule__Link__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getLinkAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleLink"
+
+
+    // $ANTLR start "entryRuleDependency"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:172:1: entryRuleDependency : ruleDependency EOF ;
+    public final void entryRuleDependency() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:173:1: ( ruleDependency EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:174:1: ruleDependency EOF
+            {
+             before(grammarAccess.getDependencyRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleDependency_in_entryRuleDependency301);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getDependencyRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDependency308); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleDependency"
+
+
+    // $ANTLR start "ruleDependency"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:181:1: ruleDependency : ( ( rule__Dependency__Alternatives ) ) ;
+    public final void ruleDependency() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:185:2: ( ( ( rule__Dependency__Alternatives ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:186:1: ( ( rule__Dependency__Alternatives ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:186:1: ( ( rule__Dependency__Alternatives ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:187:1: ( rule__Dependency__Alternatives )
+            {
+             before(grammarAccess.getDependencyAccess().getAlternatives()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:188:1: ( rule__Dependency__Alternatives )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:188:2: rule__Dependency__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Dependency__Alternatives_in_ruleDependency334);
+            rule__Dependency__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDependencyAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleDependency"
+
+
+    // $ANTLR start "entryRuleDNIUnit"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:200:1: entryRuleDNIUnit : ruleDNIUnit EOF ;
+    public final void entryRuleDNIUnit() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:201:1: ( ruleDNIUnit EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:202:1: ruleDNIUnit EOF
+            {
+             before(grammarAccess.getDNIUnitRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleDNIUnit_in_entryRuleDNIUnit361);
+            ruleDNIUnit();
+
+            state._fsp--;
+
+             after(grammarAccess.getDNIUnitRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDNIUnit368); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleDNIUnit"
+
+
+    // $ANTLR start "ruleDNIUnit"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:209:1: ruleDNIUnit : ( ruleSpeedUnit ) ;
+    public final void ruleDNIUnit() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:213:2: ( ( ruleSpeedUnit ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:214:1: ( ruleSpeedUnit )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:214:1: ( ruleSpeedUnit )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:215:1: ruleSpeedUnit
+            {
+             before(grammarAccess.getDNIUnitAccess().getSpeedUnitParserRuleCall()); 
+            pushFollow(FollowSets000.FOLLOW_ruleSpeedUnit_in_ruleDNIUnit394);
+            ruleSpeedUnit();
+
+            state._fsp--;
+
+             after(grammarAccess.getDNIUnitAccess().getSpeedUnitParserRuleCall()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleDNIUnit"
+
+
+    // $ANTLR start "entryRuleFunction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:228:1: entryRuleFunction : ruleFunction EOF ;
+    public final void entryRuleFunction() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:229:1: ( ruleFunction EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:230:1: ruleFunction EOF
+            {
+             before(grammarAccess.getFunctionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleFunction_in_entryRuleFunction420);
+            ruleFunction();
+
+            state._fsp--;
+
+             after(grammarAccess.getFunctionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFunction427); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFunction"
+
+
+    // $ANTLR start "ruleFunction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:237:1: ruleFunction : ( ( rule__Function__Alternatives ) ) ;
+    public final void ruleFunction() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:241:2: ( ( ( rule__Function__Alternatives ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:242:1: ( ( rule__Function__Alternatives ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:242:1: ( ( rule__Function__Alternatives ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:243:1: ( rule__Function__Alternatives )
+            {
+             before(grammarAccess.getFunctionAccess().getAlternatives()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:244:1: ( rule__Function__Alternatives )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:244:2: rule__Function__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Function__Alternatives_in_ruleFunction453);
+            rule__Function__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFunctionAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFunction"
+
+
+    // $ANTLR start "entryRuleWorkload"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:256:1: entryRuleWorkload : ruleWorkload EOF ;
+    public final void entryRuleWorkload() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:257:1: ( ruleWorkload EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:258:1: ruleWorkload EOF
+            {
+             before(grammarAccess.getWorkloadRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleWorkload_in_entryRuleWorkload480);
+            ruleWorkload();
+
+            state._fsp--;
+
+             after(grammarAccess.getWorkloadRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleWorkload487); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleWorkload"
+
+
+    // $ANTLR start "ruleWorkload"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:265:1: ruleWorkload : ( ruleGenericWorkload ) ;
+    public final void ruleWorkload() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:269:2: ( ( ruleGenericWorkload ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:270:1: ( ruleGenericWorkload )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:270:1: ( ruleGenericWorkload )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:271:1: ruleGenericWorkload
+            {
+             before(grammarAccess.getWorkloadAccess().getGenericWorkloadParserRuleCall()); 
+            pushFollow(FollowSets000.FOLLOW_ruleGenericWorkload_in_ruleWorkload513);
+            ruleGenericWorkload();
+
+            state._fsp--;
+
+             after(grammarAccess.getWorkloadAccess().getGenericWorkloadParserRuleCall()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleWorkload"
+
+
+    // $ANTLR start "entryRuleAbstractAction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:284:1: entryRuleAbstractAction : ruleAbstractAction EOF ;
+    public final void entryRuleAbstractAction() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:285:1: ( ruleAbstractAction EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:286:1: ruleAbstractAction EOF
+            {
+             before(grammarAccess.getAbstractActionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleAbstractAction_in_entryRuleAbstractAction539);
+            ruleAbstractAction();
+
+            state._fsp--;
+
+             after(grammarAccess.getAbstractActionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleAbstractAction546); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleAbstractAction"
+
+
+    // $ANTLR start "ruleAbstractAction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:293:1: ruleAbstractAction : ( ( rule__AbstractAction__Alternatives ) ) ;
+    public final void ruleAbstractAction() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:297:2: ( ( ( rule__AbstractAction__Alternatives ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:298:1: ( ( rule__AbstractAction__Alternatives ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:298:1: ( ( rule__AbstractAction__Alternatives ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:299:1: ( rule__AbstractAction__Alternatives )
+            {
+             before(grammarAccess.getAbstractActionAccess().getAlternatives()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:300:1: ( rule__AbstractAction__Alternatives )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:300:2: rule__AbstractAction__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__AbstractAction__Alternatives_in_ruleAbstractAction572);
+            rule__AbstractAction__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getAbstractActionAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleAbstractAction"
+
+
+    // $ANTLR start "entryRulePerformanceSpecification"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:312:1: entryRulePerformanceSpecification : rulePerformanceSpecification EOF ;
+    public final void entryRulePerformanceSpecification() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:313:1: ( rulePerformanceSpecification EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:314:1: rulePerformanceSpecification EOF
+            {
+             before(grammarAccess.getPerformanceSpecificationRule()); 
+            pushFollow(FollowSets000.FOLLOW_rulePerformanceSpecification_in_entryRulePerformanceSpecification599);
+            rulePerformanceSpecification();
+
+            state._fsp--;
+
+             after(grammarAccess.getPerformanceSpecificationRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePerformanceSpecification606); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePerformanceSpecification"
+
+
+    // $ANTLR start "rulePerformanceSpecification"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:321:1: rulePerformanceSpecification : ( ( rule__PerformanceSpecification__Alternatives ) ) ;
+    public final void rulePerformanceSpecification() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:325:2: ( ( ( rule__PerformanceSpecification__Alternatives ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:326:1: ( ( rule__PerformanceSpecification__Alternatives ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:326:1: ( ( rule__PerformanceSpecification__Alternatives ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:327:1: ( rule__PerformanceSpecification__Alternatives )
+            {
+             before(grammarAccess.getPerformanceSpecificationAccess().getAlternatives()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:328:1: ( rule__PerformanceSpecification__Alternatives )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:328:2: rule__PerformanceSpecification__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PerformanceSpecification__Alternatives_in_rulePerformanceSpecification632);
+            rule__PerformanceSpecification__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPerformanceSpecificationAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePerformanceSpecification"
+
+
+    // $ANTLR start "entryRuleNetworkInterfacePerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:340:1: entryRuleNetworkInterfacePerfSpec : ruleNetworkInterfacePerfSpec EOF ;
+    public final void entryRuleNetworkInterfacePerfSpec() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:341:1: ( ruleNetworkInterfacePerfSpec EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:342:1: ruleNetworkInterfacePerfSpec EOF
+            {
+             before(grammarAccess.getNetworkInterfacePerfSpecRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleNetworkInterfacePerfSpec_in_entryRuleNetworkInterfacePerfSpec659);
+            ruleNetworkInterfacePerfSpec();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkInterfacePerfSpecRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNetworkInterfacePerfSpec666); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleNetworkInterfacePerfSpec"
+
+
+    // $ANTLR start "ruleNetworkInterfacePerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:349:1: ruleNetworkInterfacePerfSpec : ( ( rule__NetworkInterfacePerfSpec__Alternatives ) ) ;
+    public final void ruleNetworkInterfacePerfSpec() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:353:2: ( ( ( rule__NetworkInterfacePerfSpec__Alternatives ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:354:1: ( ( rule__NetworkInterfacePerfSpec__Alternatives ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:354:1: ( ( rule__NetworkInterfacePerfSpec__Alternatives ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:355:1: ( rule__NetworkInterfacePerfSpec__Alternatives )
+            {
+             before(grammarAccess.getNetworkInterfacePerfSpecAccess().getAlternatives()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:356:1: ( rule__NetworkInterfacePerfSpec__Alternatives )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:356:2: rule__NetworkInterfacePerfSpec__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInterfacePerfSpec__Alternatives_in_ruleNetworkInterfacePerfSpec692);
+            rule__NetworkInterfacePerfSpec__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkInterfacePerfSpecAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleNetworkInterfacePerfSpec"
+
+
+    // $ANTLR start "entryRuleVirtualNetworkInterfacePerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:368:1: entryRuleVirtualNetworkInterfacePerfSpec : ruleVirtualNetworkInterfacePerfSpec EOF ;
+    public final void entryRuleVirtualNetworkInterfacePerfSpec() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:369:1: ( ruleVirtualNetworkInterfacePerfSpec EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:370:1: ruleVirtualNetworkInterfacePerfSpec EOF
+            {
+             before(grammarAccess.getVirtualNetworkInterfacePerfSpecRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleVirtualNetworkInterfacePerfSpec_in_entryRuleVirtualNetworkInterfacePerfSpec719);
+            ruleVirtualNetworkInterfacePerfSpec();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNetworkInterfacePerfSpecRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleVirtualNetworkInterfacePerfSpec726); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleVirtualNetworkInterfacePerfSpec"
+
+
+    // $ANTLR start "ruleVirtualNetworkInterfacePerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:377:1: ruleVirtualNetworkInterfacePerfSpec : ( ( rule__VirtualNetworkInterfacePerfSpec__Group__0 ) ) ;
+    public final void ruleVirtualNetworkInterfacePerfSpec() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:381:2: ( ( ( rule__VirtualNetworkInterfacePerfSpec__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:382:1: ( ( rule__VirtualNetworkInterfacePerfSpec__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:382:1: ( ( rule__VirtualNetworkInterfacePerfSpec__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:383:1: ( rule__VirtualNetworkInterfacePerfSpec__Group__0 )
+            {
+             before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:384:1: ( rule__VirtualNetworkInterfacePerfSpec__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:384:2: rule__VirtualNetworkInterfacePerfSpec__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__0_in_ruleVirtualNetworkInterfacePerfSpec752);
+            rule__VirtualNetworkInterfacePerfSpec__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleVirtualNetworkInterfacePerfSpec"
+
+
+    // $ANTLR start "entryRulePhysicalNetworkInterfacePerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:396:1: entryRulePhysicalNetworkInterfacePerfSpec : rulePhysicalNetworkInterfacePerfSpec EOF ;
+    public final void entryRulePhysicalNetworkInterfacePerfSpec() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:397:1: ( rulePhysicalNetworkInterfacePerfSpec EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:398:1: rulePhysicalNetworkInterfacePerfSpec EOF
+            {
+             before(grammarAccess.getPhysicalNetworkInterfacePerfSpecRule()); 
+            pushFollow(FollowSets000.FOLLOW_rulePhysicalNetworkInterfacePerfSpec_in_entryRulePhysicalNetworkInterfacePerfSpec779);
+            rulePhysicalNetworkInterfacePerfSpec();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNetworkInterfacePerfSpecRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePhysicalNetworkInterfacePerfSpec786); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePhysicalNetworkInterfacePerfSpec"
+
+
+    // $ANTLR start "rulePhysicalNetworkInterfacePerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:405:1: rulePhysicalNetworkInterfacePerfSpec : ( ( rule__PhysicalNetworkInterfacePerfSpec__Group__0 ) ) ;
+    public final void rulePhysicalNetworkInterfacePerfSpec() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:409:2: ( ( ( rule__PhysicalNetworkInterfacePerfSpec__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:410:1: ( ( rule__PhysicalNetworkInterfacePerfSpec__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:410:1: ( ( rule__PhysicalNetworkInterfacePerfSpec__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:411:1: ( rule__PhysicalNetworkInterfacePerfSpec__Group__0 )
+            {
+             before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:412:1: ( rule__PhysicalNetworkInterfacePerfSpec__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:412:2: rule__PhysicalNetworkInterfacePerfSpec__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__0_in_rulePhysicalNetworkInterfacePerfSpec812);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePhysicalNetworkInterfacePerfSpec"
+
+
+    // $ANTLR start "entryRuleLinkPerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:424:1: entryRuleLinkPerfSpec : ruleLinkPerfSpec EOF ;
+    public final void entryRuleLinkPerfSpec() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:425:1: ( ruleLinkPerfSpec EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:426:1: ruleLinkPerfSpec EOF
+            {
+             before(grammarAccess.getLinkPerfSpecRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleLinkPerfSpec_in_entryRuleLinkPerfSpec839);
+            ruleLinkPerfSpec();
+
+            state._fsp--;
+
+             after(grammarAccess.getLinkPerfSpecRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLinkPerfSpec846); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleLinkPerfSpec"
+
+
+    // $ANTLR start "ruleLinkPerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:433:1: ruleLinkPerfSpec : ( ( rule__LinkPerfSpec__Alternatives ) ) ;
+    public final void ruleLinkPerfSpec() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:437:2: ( ( ( rule__LinkPerfSpec__Alternatives ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:438:1: ( ( rule__LinkPerfSpec__Alternatives ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:438:1: ( ( rule__LinkPerfSpec__Alternatives ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:439:1: ( rule__LinkPerfSpec__Alternatives )
+            {
+             before(grammarAccess.getLinkPerfSpecAccess().getAlternatives()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:440:1: ( rule__LinkPerfSpec__Alternatives )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:440:2: rule__LinkPerfSpec__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__LinkPerfSpec__Alternatives_in_ruleLinkPerfSpec872);
+            rule__LinkPerfSpec__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getLinkPerfSpecAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleLinkPerfSpec"
+
+
+    // $ANTLR start "entryRuleVirtualLinkPerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:452:1: entryRuleVirtualLinkPerfSpec : ruleVirtualLinkPerfSpec EOF ;
+    public final void entryRuleVirtualLinkPerfSpec() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:453:1: ( ruleVirtualLinkPerfSpec EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:454:1: ruleVirtualLinkPerfSpec EOF
+            {
+             before(grammarAccess.getVirtualLinkPerfSpecRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleVirtualLinkPerfSpec_in_entryRuleVirtualLinkPerfSpec899);
+            ruleVirtualLinkPerfSpec();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualLinkPerfSpecRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleVirtualLinkPerfSpec906); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleVirtualLinkPerfSpec"
+
+
+    // $ANTLR start "ruleVirtualLinkPerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:461:1: ruleVirtualLinkPerfSpec : ( ( rule__VirtualLinkPerfSpec__Group__0 ) ) ;
+    public final void ruleVirtualLinkPerfSpec() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:465:2: ( ( ( rule__VirtualLinkPerfSpec__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:466:1: ( ( rule__VirtualLinkPerfSpec__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:466:1: ( ( rule__VirtualLinkPerfSpec__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:467:1: ( rule__VirtualLinkPerfSpec__Group__0 )
+            {
+             before(grammarAccess.getVirtualLinkPerfSpecAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:468:1: ( rule__VirtualLinkPerfSpec__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:468:2: rule__VirtualLinkPerfSpec__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__Group__0_in_ruleVirtualLinkPerfSpec932);
+            rule__VirtualLinkPerfSpec__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualLinkPerfSpecAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleVirtualLinkPerfSpec"
+
+
+    // $ANTLR start "entryRulePhysicalLinkPerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:480:1: entryRulePhysicalLinkPerfSpec : rulePhysicalLinkPerfSpec EOF ;
+    public final void entryRulePhysicalLinkPerfSpec() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:481:1: ( rulePhysicalLinkPerfSpec EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:482:1: rulePhysicalLinkPerfSpec EOF
+            {
+             before(grammarAccess.getPhysicalLinkPerfSpecRule()); 
+            pushFollow(FollowSets000.FOLLOW_rulePhysicalLinkPerfSpec_in_entryRulePhysicalLinkPerfSpec959);
+            rulePhysicalLinkPerfSpec();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalLinkPerfSpecRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePhysicalLinkPerfSpec966); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePhysicalLinkPerfSpec"
+
+
+    // $ANTLR start "rulePhysicalLinkPerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:489:1: rulePhysicalLinkPerfSpec : ( ( rule__PhysicalLinkPerfSpec__Group__0 ) ) ;
+    public final void rulePhysicalLinkPerfSpec() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:493:2: ( ( ( rule__PhysicalLinkPerfSpec__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:494:1: ( ( rule__PhysicalLinkPerfSpec__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:494:1: ( ( rule__PhysicalLinkPerfSpec__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:495:1: ( rule__PhysicalLinkPerfSpec__Group__0 )
+            {
+             before(grammarAccess.getPhysicalLinkPerfSpecAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:496:1: ( rule__PhysicalLinkPerfSpec__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:496:2: rule__PhysicalLinkPerfSpec__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__Group__0_in_rulePhysicalLinkPerfSpec992);
+            rule__PhysicalLinkPerfSpec__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalLinkPerfSpecAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePhysicalLinkPerfSpec"
+
+
+    // $ANTLR start "entryRuleIntermediateNodePerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:508:1: entryRuleIntermediateNodePerfSpec : ruleIntermediateNodePerfSpec EOF ;
+    public final void entryRuleIntermediateNodePerfSpec() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:509:1: ( ruleIntermediateNodePerfSpec EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:510:1: ruleIntermediateNodePerfSpec EOF
+            {
+             before(grammarAccess.getIntermediateNodePerfSpecRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleIntermediateNodePerfSpec_in_entryRuleIntermediateNodePerfSpec1019);
+            ruleIntermediateNodePerfSpec();
+
+            state._fsp--;
+
+             after(grammarAccess.getIntermediateNodePerfSpecRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleIntermediateNodePerfSpec1026); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleIntermediateNodePerfSpec"
+
+
+    // $ANTLR start "ruleIntermediateNodePerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:517:1: ruleIntermediateNodePerfSpec : ( ( rule__IntermediateNodePerfSpec__Group__0 ) ) ;
+    public final void ruleIntermediateNodePerfSpec() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:521:2: ( ( ( rule__IntermediateNodePerfSpec__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:522:1: ( ( rule__IntermediateNodePerfSpec__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:522:1: ( ( rule__IntermediateNodePerfSpec__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:523:1: ( rule__IntermediateNodePerfSpec__Group__0 )
+            {
+             before(grammarAccess.getIntermediateNodePerfSpecAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:524:1: ( rule__IntermediateNodePerfSpec__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:524:2: rule__IntermediateNodePerfSpec__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IntermediateNodePerfSpec__Group__0_in_ruleIntermediateNodePerfSpec1052);
+            rule__IntermediateNodePerfSpec__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getIntermediateNodePerfSpecAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleIntermediateNodePerfSpec"
+
+
+    // $ANTLR start "entryRuleControlPlanePerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:536:1: entryRuleControlPlanePerfSpec : ruleControlPlanePerfSpec EOF ;
+    public final void entryRuleControlPlanePerfSpec() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:537:1: ( ruleControlPlanePerfSpec EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:538:1: ruleControlPlanePerfSpec EOF
+            {
+             before(grammarAccess.getControlPlanePerfSpecRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleControlPlanePerfSpec_in_entryRuleControlPlanePerfSpec1079);
+            ruleControlPlanePerfSpec();
+
+            state._fsp--;
+
+             after(grammarAccess.getControlPlanePerfSpecRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleControlPlanePerfSpec1086); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleControlPlanePerfSpec"
+
+
+    // $ANTLR start "ruleControlPlanePerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:545:1: ruleControlPlanePerfSpec : ( ( rule__ControlPlanePerfSpec__Group__0 ) ) ;
+    public final void ruleControlPlanePerfSpec() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:549:2: ( ( ( rule__ControlPlanePerfSpec__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:550:1: ( ( rule__ControlPlanePerfSpec__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:550:1: ( ( rule__ControlPlanePerfSpec__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:551:1: ( rule__ControlPlanePerfSpec__Group__0 )
+            {
+             before(grammarAccess.getControlPlanePerfSpecAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:552:1: ( rule__ControlPlanePerfSpec__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:552:2: rule__ControlPlanePerfSpec__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__Group__0_in_ruleControlPlanePerfSpec1112);
+            rule__ControlPlanePerfSpec__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getControlPlanePerfSpecAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleControlPlanePerfSpec"
+
+
+    // $ANTLR start "entryRuleDataPlanePerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:564:1: entryRuleDataPlanePerfSpec : ruleDataPlanePerfSpec EOF ;
+    public final void entryRuleDataPlanePerfSpec() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:565:1: ( ruleDataPlanePerfSpec EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:566:1: ruleDataPlanePerfSpec EOF
+            {
+             before(grammarAccess.getDataPlanePerfSpecRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleDataPlanePerfSpec_in_entryRuleDataPlanePerfSpec1139);
+            ruleDataPlanePerfSpec();
+
+            state._fsp--;
+
+             after(grammarAccess.getDataPlanePerfSpecRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDataPlanePerfSpec1146); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleDataPlanePerfSpec"
+
+
+    // $ANTLR start "ruleDataPlanePerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:573:1: ruleDataPlanePerfSpec : ( ( rule__DataPlanePerfSpec__Group__0 ) ) ;
+    public final void ruleDataPlanePerfSpec() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:577:2: ( ( ( rule__DataPlanePerfSpec__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:578:1: ( ( rule__DataPlanePerfSpec__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:578:1: ( ( rule__DataPlanePerfSpec__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:579:1: ( rule__DataPlanePerfSpec__Group__0 )
+            {
+             before(grammarAccess.getDataPlanePerfSpecAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:580:1: ( rule__DataPlanePerfSpec__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:580:2: rule__DataPlanePerfSpec__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__0_in_ruleDataPlanePerfSpec1172);
+            rule__DataPlanePerfSpec__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDataPlanePerfSpecAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleDataPlanePerfSpec"
+
+
+    // $ANTLR start "entryRuleEndNodePerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:592:1: entryRuleEndNodePerfSpec : ruleEndNodePerfSpec EOF ;
+    public final void entryRuleEndNodePerfSpec() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:593:1: ( ruleEndNodePerfSpec EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:594:1: ruleEndNodePerfSpec EOF
+            {
+             before(grammarAccess.getEndNodePerfSpecRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEndNodePerfSpec_in_entryRuleEndNodePerfSpec1199);
+            ruleEndNodePerfSpec();
+
+            state._fsp--;
+
+             after(grammarAccess.getEndNodePerfSpecRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEndNodePerfSpec1206); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleEndNodePerfSpec"
+
+
+    // $ANTLR start "ruleEndNodePerfSpec"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:601:1: ruleEndNodePerfSpec : ( ( rule__EndNodePerfSpec__Group__0 ) ) ;
+    public final void ruleEndNodePerfSpec() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:605:2: ( ( ( rule__EndNodePerfSpec__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:606:1: ( ( rule__EndNodePerfSpec__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:606:1: ( ( rule__EndNodePerfSpec__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:607:1: ( rule__EndNodePerfSpec__Group__0 )
+            {
+             before(grammarAccess.getEndNodePerfSpecAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:608:1: ( rule__EndNodePerfSpec__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:608:2: rule__EndNodePerfSpec__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group__0_in_ruleEndNodePerfSpec1232);
+            rule__EndNodePerfSpec__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEndNodePerfSpecAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleEndNodePerfSpec"
+
+
+    // $ANTLR start "entryRuleNetworkInterface"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:620:1: entryRuleNetworkInterface : ruleNetworkInterface EOF ;
+    public final void entryRuleNetworkInterface() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:621:1: ( ruleNetworkInterface EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:622:1: ruleNetworkInterface EOF
+            {
+             before(grammarAccess.getNetworkInterfaceRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleNetworkInterface_in_entryRuleNetworkInterface1259);
+            ruleNetworkInterface();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkInterfaceRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNetworkInterface1266); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleNetworkInterface"
+
+
+    // $ANTLR start "ruleNetworkInterface"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:629:1: ruleNetworkInterface : ( ( rule__NetworkInterface__Alternatives ) ) ;
+    public final void ruleNetworkInterface() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:633:2: ( ( ( rule__NetworkInterface__Alternatives ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:634:1: ( ( rule__NetworkInterface__Alternatives ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:634:1: ( ( rule__NetworkInterface__Alternatives ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:635:1: ( rule__NetworkInterface__Alternatives )
+            {
+             before(grammarAccess.getNetworkInterfaceAccess().getAlternatives()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:636:1: ( rule__NetworkInterface__Alternatives )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:636:2: rule__NetworkInterface__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInterface__Alternatives_in_ruleNetworkInterface1292);
+            rule__NetworkInterface__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkInterfaceAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleNetworkInterface"
+
+
+    // $ANTLR start "entryRuleNetworkTraffic"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:648:1: entryRuleNetworkTraffic : ruleNetworkTraffic EOF ;
+    public final void entryRuleNetworkTraffic() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:649:1: ( ruleNetworkTraffic EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:650:1: ruleNetworkTraffic EOF
+            {
+             before(grammarAccess.getNetworkTrafficRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleNetworkTraffic_in_entryRuleNetworkTraffic1319);
+            ruleNetworkTraffic();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkTrafficRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNetworkTraffic1326); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleNetworkTraffic"
+
+
+    // $ANTLR start "ruleNetworkTraffic"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:657:1: ruleNetworkTraffic : ( ( rule__NetworkTraffic__Group__0 ) ) ;
+    public final void ruleNetworkTraffic() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:661:2: ( ( ( rule__NetworkTraffic__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:662:1: ( ( rule__NetworkTraffic__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:662:1: ( ( rule__NetworkTraffic__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:663:1: ( rule__NetworkTraffic__Group__0 )
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:664:1: ( rule__NetworkTraffic__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:664:2: rule__NetworkTraffic__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group__0_in_ruleNetworkTraffic1352);
+            rule__NetworkTraffic__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkTrafficAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleNetworkTraffic"
+
+
+    // $ANTLR start "entryRuleNetworkStructure"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:676:1: entryRuleNetworkStructure : ruleNetworkStructure EOF ;
+    public final void entryRuleNetworkStructure() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:677:1: ( ruleNetworkStructure EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:678:1: ruleNetworkStructure EOF
+            {
+             before(grammarAccess.getNetworkStructureRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleNetworkStructure_in_entryRuleNetworkStructure1379);
+            ruleNetworkStructure();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkStructureRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNetworkStructure1386); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleNetworkStructure"
+
+
+    // $ANTLR start "ruleNetworkStructure"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:685:1: ruleNetworkStructure : ( ( rule__NetworkStructure__Group__0 ) ) ;
+    public final void ruleNetworkStructure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:689:2: ( ( ( rule__NetworkStructure__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:690:1: ( ( rule__NetworkStructure__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:690:1: ( ( rule__NetworkStructure__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:691:1: ( rule__NetworkStructure__Group__0 )
+            {
+             before(grammarAccess.getNetworkStructureAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:692:1: ( rule__NetworkStructure__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:692:2: rule__NetworkStructure__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group__0_in_ruleNetworkStructure1412);
+            rule__NetworkStructure__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkStructureAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleNetworkStructure"
+
+
+    // $ANTLR start "entryRuleNetworkConfiguration"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:704:1: entryRuleNetworkConfiguration : ruleNetworkConfiguration EOF ;
+    public final void entryRuleNetworkConfiguration() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:705:1: ( ruleNetworkConfiguration EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:706:1: ruleNetworkConfiguration EOF
+            {
+             before(grammarAccess.getNetworkConfigurationRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleNetworkConfiguration_in_entryRuleNetworkConfiguration1439);
+            ruleNetworkConfiguration();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkConfigurationRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNetworkConfiguration1446); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleNetworkConfiguration"
+
+
+    // $ANTLR start "ruleNetworkConfiguration"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:713:1: ruleNetworkConfiguration : ( ( rule__NetworkConfiguration__Group__0 ) ) ;
+    public final void ruleNetworkConfiguration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:717:2: ( ( ( rule__NetworkConfiguration__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:718:1: ( ( rule__NetworkConfiguration__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:718:1: ( ( rule__NetworkConfiguration__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:719:1: ( rule__NetworkConfiguration__Group__0 )
+            {
+             before(grammarAccess.getNetworkConfigurationAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:720:1: ( rule__NetworkConfiguration__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:720:2: rule__NetworkConfiguration__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkConfiguration__Group__0_in_ruleNetworkConfiguration1472);
+            rule__NetworkConfiguration__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkConfigurationAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleNetworkConfiguration"
+
+
+    // $ANTLR start "entryRuleExperimentParam"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:732:1: entryRuleExperimentParam : ruleExperimentParam EOF ;
+    public final void entryRuleExperimentParam() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:733:1: ( ruleExperimentParam EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:734:1: ruleExperimentParam EOF
+            {
+             before(grammarAccess.getExperimentParamRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleExperimentParam_in_entryRuleExperimentParam1499);
+            ruleExperimentParam();
+
+            state._fsp--;
+
+             after(grammarAccess.getExperimentParamRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExperimentParam1506); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleExperimentParam"
+
+
+    // $ANTLR start "ruleExperimentParam"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:741:1: ruleExperimentParam : ( ( rule__ExperimentParam__Group__0 ) ) ;
+    public final void ruleExperimentParam() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:745:2: ( ( ( rule__ExperimentParam__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:746:1: ( ( rule__ExperimentParam__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:746:1: ( ( rule__ExperimentParam__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:747:1: ( rule__ExperimentParam__Group__0 )
+            {
+             before(grammarAccess.getExperimentParamAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:748:1: ( rule__ExperimentParam__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:748:2: rule__ExperimentParam__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExperimentParam__Group__0_in_ruleExperimentParam1532);
+            rule__ExperimentParam__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getExperimentParamAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleExperimentParam"
+
+
+    // $ANTLR start "entryRuleEString"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:760:1: entryRuleEString : ruleEString EOF ;
+    public final void entryRuleEString() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:761:1: ( ruleEString EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:762:1: ruleEString EOF
+            {
+             before(grammarAccess.getEStringRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEString_in_entryRuleEString1559);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getEStringRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEString1566); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleEString"
+
+
+    // $ANTLR start "ruleEString"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:769:1: ruleEString : ( ( rule__EString__Alternatives ) ) ;
+    public final void ruleEString() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:773:2: ( ( ( rule__EString__Alternatives ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:774:1: ( ( rule__EString__Alternatives ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:774:1: ( ( rule__EString__Alternatives ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:775:1: ( rule__EString__Alternatives )
+            {
+             before(grammarAccess.getEStringAccess().getAlternatives()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:776:1: ( rule__EString__Alternatives )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:776:2: rule__EString__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EString__Alternatives_in_ruleEString1592);
+            rule__EString__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEStringAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleEString"
+
+
+    // $ANTLR start "entryRuleSoftwareComponent"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:788:1: entryRuleSoftwareComponent : ruleSoftwareComponent EOF ;
+    public final void entryRuleSoftwareComponent() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:789:1: ( ruleSoftwareComponent EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:790:1: ruleSoftwareComponent EOF
+            {
+             before(grammarAccess.getSoftwareComponentRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleSoftwareComponent_in_entryRuleSoftwareComponent1619);
+            ruleSoftwareComponent();
+
+            state._fsp--;
+
+             after(grammarAccess.getSoftwareComponentRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSoftwareComponent1626); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleSoftwareComponent"
+
+
+    // $ANTLR start "ruleSoftwareComponent"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:797:1: ruleSoftwareComponent : ( ( rule__SoftwareComponent__Group__0 ) ) ;
+    public final void ruleSoftwareComponent() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:801:2: ( ( ( rule__SoftwareComponent__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:802:1: ( ( rule__SoftwareComponent__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:802:1: ( ( rule__SoftwareComponent__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:803:1: ( rule__SoftwareComponent__Group__0 )
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:804:1: ( rule__SoftwareComponent__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:804:2: rule__SoftwareComponent__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__0_in_ruleSoftwareComponent1652);
+            rule__SoftwareComponent__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSoftwareComponentAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleSoftwareComponent"
+
+
+    // $ANTLR start "entryRuleEntityAddress"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:816:1: entryRuleEntityAddress : ruleEntityAddress EOF ;
+    public final void entryRuleEntityAddress() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:817:1: ( ruleEntityAddress EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:818:1: ruleEntityAddress EOF
+            {
+             before(grammarAccess.getEntityAddressRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEntityAddress_in_entryRuleEntityAddress1679);
+            ruleEntityAddress();
+
+            state._fsp--;
+
+             after(grammarAccess.getEntityAddressRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEntityAddress1686); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleEntityAddress"
+
+
+    // $ANTLR start "ruleEntityAddress"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:825:1: ruleEntityAddress : ( ( rule__EntityAddress__Group__0 ) ) ;
+    public final void ruleEntityAddress() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:829:2: ( ( ( rule__EntityAddress__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:830:1: ( ( rule__EntityAddress__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:830:1: ( ( rule__EntityAddress__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:831:1: ( rule__EntityAddress__Group__0 )
+            {
+             before(grammarAccess.getEntityAddressAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:832:1: ( rule__EntityAddress__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:832:2: rule__EntityAddress__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group__0_in_ruleEntityAddress1712);
+            rule__EntityAddress__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEntityAddressAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleEntityAddress"
+
+
+    // $ANTLR start "entryRuleONOFFFlow"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:844:1: entryRuleONOFFFlow : ruleONOFFFlow EOF ;
+    public final void entryRuleONOFFFlow() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:845:1: ( ruleONOFFFlow EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:846:1: ruleONOFFFlow EOF
+            {
+             before(grammarAccess.getONOFFFlowRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleONOFFFlow_in_entryRuleONOFFFlow1739);
+            ruleONOFFFlow();
+
+            state._fsp--;
+
+             after(grammarAccess.getONOFFFlowRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleONOFFFlow1746); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleONOFFFlow"
+
+
+    // $ANTLR start "ruleONOFFFlow"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:853:1: ruleONOFFFlow : ( ( rule__ONOFFFlow__Group__0 ) ) ;
+    public final void ruleONOFFFlow() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:857:2: ( ( ( rule__ONOFFFlow__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:858:1: ( ( rule__ONOFFFlow__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:858:1: ( ( rule__ONOFFFlow__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:859:1: ( rule__ONOFFFlow__Group__0 )
+            {
+             before(grammarAccess.getONOFFFlowAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:860:1: ( rule__ONOFFFlow__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:860:2: rule__ONOFFFlow__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__0_in_ruleONOFFFlow1772);
+            rule__ONOFFFlow__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleONOFFFlow"
+
+
+    // $ANTLR start "entryRuleGenericFlow"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:872:1: entryRuleGenericFlow : ruleGenericFlow EOF ;
+    public final void entryRuleGenericFlow() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:873:1: ( ruleGenericFlow EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:874:1: ruleGenericFlow EOF
+            {
+             before(grammarAccess.getGenericFlowRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleGenericFlow_in_entryRuleGenericFlow1799);
+            ruleGenericFlow();
+
+            state._fsp--;
+
+             after(grammarAccess.getGenericFlowRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleGenericFlow1806); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleGenericFlow"
+
+
+    // $ANTLR start "ruleGenericFlow"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:881:1: ruleGenericFlow : ( ( rule__GenericFlow__Group__0 ) ) ;
+    public final void ruleGenericFlow() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:885:2: ( ( ( rule__GenericFlow__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:886:1: ( ( rule__GenericFlow__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:886:1: ( ( rule__GenericFlow__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:887:1: ( rule__GenericFlow__Group__0 )
+            {
+             before(grammarAccess.getGenericFlowAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:888:1: ( rule__GenericFlow__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:888:2: rule__GenericFlow__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__0_in_ruleGenericFlow1832);
+            rule__GenericFlow__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGenericFlowAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleGenericFlow"
+
+
+    // $ANTLR start "entryRuleNetworkProtocol"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:900:1: entryRuleNetworkProtocol : ruleNetworkProtocol EOF ;
+    public final void entryRuleNetworkProtocol() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:901:1: ( ruleNetworkProtocol EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:902:1: ruleNetworkProtocol EOF
+            {
+             before(grammarAccess.getNetworkProtocolRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleNetworkProtocol_in_entryRuleNetworkProtocol1859);
+            ruleNetworkProtocol();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkProtocolRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNetworkProtocol1866); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleNetworkProtocol"
+
+
+    // $ANTLR start "ruleNetworkProtocol"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:909:1: ruleNetworkProtocol : ( ( rule__NetworkProtocol__Group__0 ) ) ;
+    public final void ruleNetworkProtocol() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:913:2: ( ( ( rule__NetworkProtocol__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:914:1: ( ( rule__NetworkProtocol__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:914:1: ( ( rule__NetworkProtocol__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:915:1: ( rule__NetworkProtocol__Group__0 )
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:916:1: ( rule__NetworkProtocol__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:916:2: rule__NetworkProtocol__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__0_in_ruleNetworkProtocol1892);
+            rule__NetworkProtocol__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkProtocolAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleNetworkProtocol"
+
+
+    // $ANTLR start "entryRuleEInt"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:928:1: entryRuleEInt : ruleEInt EOF ;
+    public final void entryRuleEInt() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:929:1: ( ruleEInt EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:930:1: ruleEInt EOF
+            {
+             before(grammarAccess.getEIntRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEInt_in_entryRuleEInt1919);
+            ruleEInt();
+
+            state._fsp--;
+
+             after(grammarAccess.getEIntRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEInt1926); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleEInt"
+
+
+    // $ANTLR start "ruleEInt"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:937:1: ruleEInt : ( ( rule__EInt__Group__0 ) ) ;
+    public final void ruleEInt() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:941:2: ( ( ( rule__EInt__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:942:1: ( ( rule__EInt__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:942:1: ( ( rule__EInt__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:943:1: ( rule__EInt__Group__0 )
+            {
+             before(grammarAccess.getEIntAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:944:1: ( rule__EInt__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:944:2: rule__EInt__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EInt__Group__0_in_ruleEInt1952);
+            rule__EInt__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEIntAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleEInt"
+
+
+    // $ANTLR start "entryRuleEBoolean"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:956:1: entryRuleEBoolean : ruleEBoolean EOF ;
+    public final void entryRuleEBoolean() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:957:1: ( ruleEBoolean EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:958:1: ruleEBoolean EOF
+            {
+             before(grammarAccess.getEBooleanRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEBoolean_in_entryRuleEBoolean1979);
+            ruleEBoolean();
+
+            state._fsp--;
+
+             after(grammarAccess.getEBooleanRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEBoolean1986); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleEBoolean"
+
+
+    // $ANTLR start "ruleEBoolean"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:965:1: ruleEBoolean : ( ( rule__EBoolean__Alternatives ) ) ;
+    public final void ruleEBoolean() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:969:2: ( ( ( rule__EBoolean__Alternatives ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:970:1: ( ( rule__EBoolean__Alternatives ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:970:1: ( ( rule__EBoolean__Alternatives ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:971:1: ( rule__EBoolean__Alternatives )
+            {
+             before(grammarAccess.getEBooleanAccess().getAlternatives()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:972:1: ( rule__EBoolean__Alternatives )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:972:2: rule__EBoolean__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EBoolean__Alternatives_in_ruleEBoolean2012);
+            rule__EBoolean__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEBooleanAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleEBoolean"
+
+
+    // $ANTLR start "entryRuleConstantDoubleVariable"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:984:1: entryRuleConstantDoubleVariable : ruleConstantDoubleVariable EOF ;
+    public final void entryRuleConstantDoubleVariable() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:985:1: ( ruleConstantDoubleVariable EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:986:1: ruleConstantDoubleVariable EOF
+            {
+             before(grammarAccess.getConstantDoubleVariableRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleConstantDoubleVariable_in_entryRuleConstantDoubleVariable2039);
+            ruleConstantDoubleVariable();
+
+            state._fsp--;
+
+             after(grammarAccess.getConstantDoubleVariableRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleConstantDoubleVariable2046); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleConstantDoubleVariable"
+
+
+    // $ANTLR start "ruleConstantDoubleVariable"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:993:1: ruleConstantDoubleVariable : ( ( rule__ConstantDoubleVariable__Group__0 ) ) ;
+    public final void ruleConstantDoubleVariable() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:997:2: ( ( ( rule__ConstantDoubleVariable__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:998:1: ( ( rule__ConstantDoubleVariable__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:998:1: ( ( rule__ConstantDoubleVariable__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:999:1: ( rule__ConstantDoubleVariable__Group__0 )
+            {
+             before(grammarAccess.getConstantDoubleVariableAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1000:1: ( rule__ConstantDoubleVariable__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1000:2: rule__ConstantDoubleVariable__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ConstantDoubleVariable__Group__0_in_ruleConstantDoubleVariable2072);
+            rule__ConstantDoubleVariable__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getConstantDoubleVariableAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleConstantDoubleVariable"
+
+
+    // $ANTLR start "entryRuleConstantLongVariable"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1012:1: entryRuleConstantLongVariable : ruleConstantLongVariable EOF ;
+    public final void entryRuleConstantLongVariable() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1013:1: ( ruleConstantLongVariable EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1014:1: ruleConstantLongVariable EOF
+            {
+             before(grammarAccess.getConstantLongVariableRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleConstantLongVariable_in_entryRuleConstantLongVariable2099);
+            ruleConstantLongVariable();
+
+            state._fsp--;
+
+             after(grammarAccess.getConstantLongVariableRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleConstantLongVariable2106); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleConstantLongVariable"
+
+
+    // $ANTLR start "ruleConstantLongVariable"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1021:1: ruleConstantLongVariable : ( ( rule__ConstantLongVariable__Group__0 ) ) ;
+    public final void ruleConstantLongVariable() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1025:2: ( ( ( rule__ConstantLongVariable__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1026:1: ( ( rule__ConstantLongVariable__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1026:1: ( ( rule__ConstantLongVariable__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1027:1: ( rule__ConstantLongVariable__Group__0 )
+            {
+             before(grammarAccess.getConstantLongVariableAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1028:1: ( rule__ConstantLongVariable__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1028:2: rule__ConstantLongVariable__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ConstantLongVariable__Group__0_in_ruleConstantLongVariable2132);
+            rule__ConstantLongVariable__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getConstantLongVariableAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleConstantLongVariable"
+
+
+    // $ANTLR start "entryRuleRandomVariable"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1040:1: entryRuleRandomVariable : ruleRandomVariable EOF ;
+    public final void entryRuleRandomVariable() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1041:1: ( ruleRandomVariable EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1042:1: ruleRandomVariable EOF
+            {
+             before(grammarAccess.getRandomVariableRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleRandomVariable_in_entryRuleRandomVariable2159);
+            ruleRandomVariable();
+
+            state._fsp--;
+
+             after(grammarAccess.getRandomVariableRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleRandomVariable2166); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleRandomVariable"
+
+
+    // $ANTLR start "ruleRandomVariable"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1049:1: ruleRandomVariable : ( ( rule__RandomVariable__Group__0 ) ) ;
+    public final void ruleRandomVariable() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1053:2: ( ( ( rule__RandomVariable__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1054:1: ( ( rule__RandomVariable__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1054:1: ( ( rule__RandomVariable__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1055:1: ( rule__RandomVariable__Group__0 )
+            {
+             before(grammarAccess.getRandomVariableAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1056:1: ( rule__RandomVariable__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1056:2: rule__RandomVariable__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__RandomVariable__Group__0_in_ruleRandomVariable2192);
+            rule__RandomVariable__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRandomVariableAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleRandomVariable"
+
+
+    // $ANTLR start "entryRuleContinuousFunction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1068:1: entryRuleContinuousFunction : ruleContinuousFunction EOF ;
+    public final void entryRuleContinuousFunction() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1069:1: ( ruleContinuousFunction EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1070:1: ruleContinuousFunction EOF
+            {
+             before(grammarAccess.getContinuousFunctionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleContinuousFunction_in_entryRuleContinuousFunction2219);
+            ruleContinuousFunction();
+
+            state._fsp--;
+
+             after(grammarAccess.getContinuousFunctionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleContinuousFunction2226); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleContinuousFunction"
+
+
+    // $ANTLR start "ruleContinuousFunction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1077:1: ruleContinuousFunction : ( ( rule__ContinuousFunction__Group__0 ) ) ;
+    public final void ruleContinuousFunction() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1081:2: ( ( ( rule__ContinuousFunction__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1082:1: ( ( rule__ContinuousFunction__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1082:1: ( ( rule__ContinuousFunction__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1083:1: ( rule__ContinuousFunction__Group__0 )
+            {
+             before(grammarAccess.getContinuousFunctionAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1084:1: ( rule__ContinuousFunction__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1084:2: rule__ContinuousFunction__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ContinuousFunction__Group__0_in_ruleContinuousFunction2252);
+            rule__ContinuousFunction__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getContinuousFunctionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleContinuousFunction"
+
+
+    // $ANTLR start "entryRuleDiscreteFunction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1096:1: entryRuleDiscreteFunction : ruleDiscreteFunction EOF ;
+    public final void entryRuleDiscreteFunction() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1097:1: ( ruleDiscreteFunction EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1098:1: ruleDiscreteFunction EOF
+            {
+             before(grammarAccess.getDiscreteFunctionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleDiscreteFunction_in_entryRuleDiscreteFunction2279);
+            ruleDiscreteFunction();
+
+            state._fsp--;
+
+             after(grammarAccess.getDiscreteFunctionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDiscreteFunction2286); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleDiscreteFunction"
+
+
+    // $ANTLR start "ruleDiscreteFunction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1105:1: ruleDiscreteFunction : ( ( rule__DiscreteFunction__Group__0 ) ) ;
+    public final void ruleDiscreteFunction() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1109:2: ( ( ( rule__DiscreteFunction__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1110:1: ( ( rule__DiscreteFunction__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1110:1: ( ( rule__DiscreteFunction__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1111:1: ( rule__DiscreteFunction__Group__0 )
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1112:1: ( rule__DiscreteFunction__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1112:2: rule__DiscreteFunction__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DiscreteFunction__Group__0_in_ruleDiscreteFunction2312);
+            rule__DiscreteFunction__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDiscreteFunctionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleDiscreteFunction"
+
+
+    // $ANTLR start "entryRuleEFloat"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1124:1: entryRuleEFloat : ruleEFloat EOF ;
+    public final void entryRuleEFloat() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1125:1: ( ruleEFloat EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1126:1: ruleEFloat EOF
+            {
+             before(grammarAccess.getEFloatRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEFloat_in_entryRuleEFloat2339);
+            ruleEFloat();
+
+            state._fsp--;
+
+             after(grammarAccess.getEFloatRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEFloat2346); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleEFloat"
+
+
+    // $ANTLR start "ruleEFloat"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1133:1: ruleEFloat : ( ( rule__EFloat__Group__0 ) ) ;
+    public final void ruleEFloat() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1137:2: ( ( ( rule__EFloat__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1138:1: ( ( rule__EFloat__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1138:1: ( ( rule__EFloat__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1139:1: ( rule__EFloat__Group__0 )
+            {
+             before(grammarAccess.getEFloatAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1140:1: ( rule__EFloat__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1140:2: rule__EFloat__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EFloat__Group__0_in_ruleEFloat2372);
+            rule__EFloat__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEFloatAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleEFloat"
+
+
+    // $ANTLR start "entryRuleSpeedUnit"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1152:1: entryRuleSpeedUnit : ruleSpeedUnit EOF ;
+    public final void entryRuleSpeedUnit() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1153:1: ( ruleSpeedUnit EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1154:1: ruleSpeedUnit EOF
+            {
+             before(grammarAccess.getSpeedUnitRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleSpeedUnit_in_entryRuleSpeedUnit2399);
+            ruleSpeedUnit();
+
+            state._fsp--;
+
+             after(grammarAccess.getSpeedUnitRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSpeedUnit2406); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleSpeedUnit"
+
+
+    // $ANTLR start "ruleSpeedUnit"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1161:1: ruleSpeedUnit : ( ( rule__SpeedUnit__Group__0 ) ) ;
+    public final void ruleSpeedUnit() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1165:2: ( ( ( rule__SpeedUnit__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1166:1: ( ( rule__SpeedUnit__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1166:1: ( ( rule__SpeedUnit__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1167:1: ( rule__SpeedUnit__Group__0 )
+            {
+             before(grammarAccess.getSpeedUnitAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1168:1: ( rule__SpeedUnit__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1168:2: rule__SpeedUnit__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SpeedUnit__Group__0_in_ruleSpeedUnit2432);
+            rule__SpeedUnit__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSpeedUnitAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleSpeedUnit"
+
+
+    // $ANTLR start "entryRuleEDouble"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1180:1: entryRuleEDouble : ruleEDouble EOF ;
+    public final void entryRuleEDouble() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1181:1: ( ruleEDouble EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1182:1: ruleEDouble EOF
+            {
+             before(grammarAccess.getEDoubleRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEDouble_in_entryRuleEDouble2459);
+            ruleEDouble();
+
+            state._fsp--;
+
+             after(grammarAccess.getEDoubleRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEDouble2466); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleEDouble"
+
+
+    // $ANTLR start "ruleEDouble"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1189:1: ruleEDouble : ( ( rule__EDouble__Group__0 ) ) ;
+    public final void ruleEDouble() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1193:2: ( ( ( rule__EDouble__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1194:1: ( ( rule__EDouble__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1194:1: ( ( rule__EDouble__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1195:1: ( rule__EDouble__Group__0 )
+            {
+             before(grammarAccess.getEDoubleAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1196:1: ( rule__EDouble__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1196:2: rule__EDouble__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EDouble__Group__0_in_ruleEDouble2492);
+            rule__EDouble__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEDoubleAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleEDouble"
+
+
+    // $ANTLR start "entryRuleELong"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1208:1: entryRuleELong : ruleELong EOF ;
+    public final void entryRuleELong() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1209:1: ( ruleELong EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1210:1: ruleELong EOF
+            {
+             before(grammarAccess.getELongRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleELong_in_entryRuleELong2519);
+            ruleELong();
+
+            state._fsp--;
+
+             after(grammarAccess.getELongRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleELong2526); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleELong"
+
+
+    // $ANTLR start "ruleELong"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1217:1: ruleELong : ( ( rule__ELong__Group__0 ) ) ;
+    public final void ruleELong() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1221:2: ( ( ( rule__ELong__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1222:1: ( ( rule__ELong__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1222:1: ( ( rule__ELong__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1223:1: ( rule__ELong__Group__0 )
+            {
+             before(grammarAccess.getELongAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1224:1: ( rule__ELong__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1224:2: rule__ELong__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ELong__Group__0_in_ruleELong2552);
+            rule__ELong__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getELongAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleELong"
+
+
+    // $ANTLR start "entryRuleDataSeries"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1236:1: entryRuleDataSeries : ruleDataSeries EOF ;
+    public final void entryRuleDataSeries() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1237:1: ( ruleDataSeries EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1238:1: ruleDataSeries EOF
+            {
+             before(grammarAccess.getDataSeriesRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleDataSeries_in_entryRuleDataSeries2579);
+            ruleDataSeries();
+
+            state._fsp--;
+
+             after(grammarAccess.getDataSeriesRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDataSeries2586); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleDataSeries"
+
+
+    // $ANTLR start "ruleDataSeries"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1245:1: ruleDataSeries : ( ( rule__DataSeries__Group__0 ) ) ;
+    public final void ruleDataSeries() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1249:2: ( ( ( rule__DataSeries__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1250:1: ( ( rule__DataSeries__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1250:1: ( ( rule__DataSeries__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1251:1: ( rule__DataSeries__Group__0 )
+            {
+             before(grammarAccess.getDataSeriesAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1252:1: ( rule__DataSeries__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1252:2: rule__DataSeries__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DataSeries__Group__0_in_ruleDataSeries2612);
+            rule__DataSeries__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDataSeriesAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleDataSeries"
+
+
+    // $ANTLR start "entryRuleTrafficSource"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1264:1: entryRuleTrafficSource : ruleTrafficSource EOF ;
+    public final void entryRuleTrafficSource() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1265:1: ( ruleTrafficSource EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1266:1: ruleTrafficSource EOF
+            {
+             before(grammarAccess.getTrafficSourceRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleTrafficSource_in_entryRuleTrafficSource2639);
+            ruleTrafficSource();
+
+            state._fsp--;
+
+             after(grammarAccess.getTrafficSourceRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTrafficSource2646); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleTrafficSource"
+
+
+    // $ANTLR start "ruleTrafficSource"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1273:1: ruleTrafficSource : ( ( rule__TrafficSource__Group__0 ) ) ;
+    public final void ruleTrafficSource() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1277:2: ( ( ( rule__TrafficSource__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1278:1: ( ( rule__TrafficSource__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1278:1: ( ( rule__TrafficSource__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1279:1: ( rule__TrafficSource__Group__0 )
+            {
+             before(grammarAccess.getTrafficSourceAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1280:1: ( rule__TrafficSource__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1280:2: rule__TrafficSource__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TrafficSource__Group__0_in_ruleTrafficSource2672);
+            rule__TrafficSource__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTrafficSourceAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTrafficSource"
+
+
+    // $ANTLR start "entryRuleGenericWorkload"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1292:1: entryRuleGenericWorkload : ruleGenericWorkload EOF ;
+    public final void entryRuleGenericWorkload() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1293:1: ( ruleGenericWorkload EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1294:1: ruleGenericWorkload EOF
+            {
+             before(grammarAccess.getGenericWorkloadRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleGenericWorkload_in_entryRuleGenericWorkload2699);
+            ruleGenericWorkload();
+
+            state._fsp--;
+
+             after(grammarAccess.getGenericWorkloadRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleGenericWorkload2706); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleGenericWorkload"
+
+
+    // $ANTLR start "ruleGenericWorkload"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1301:1: ruleGenericWorkload : ( ( rule__GenericWorkload__Group__0 ) ) ;
+    public final void ruleGenericWorkload() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1305:2: ( ( ( rule__GenericWorkload__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1306:1: ( ( rule__GenericWorkload__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1306:1: ( ( rule__GenericWorkload__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1307:1: ( rule__GenericWorkload__Group__0 )
+            {
+             before(grammarAccess.getGenericWorkloadAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1308:1: ( rule__GenericWorkload__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1308:2: rule__GenericWorkload__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericWorkload__Group__0_in_ruleGenericWorkload2732);
+            rule__GenericWorkload__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGenericWorkloadAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleGenericWorkload"
+
+
+    // $ANTLR start "entryRuleBranchAction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1320:1: entryRuleBranchAction : ruleBranchAction EOF ;
+    public final void entryRuleBranchAction() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1321:1: ( ruleBranchAction EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1322:1: ruleBranchAction EOF
+            {
+             before(grammarAccess.getBranchActionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleBranchAction_in_entryRuleBranchAction2759);
+            ruleBranchAction();
+
+            state._fsp--;
+
+             after(grammarAccess.getBranchActionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBranchAction2766); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleBranchAction"
+
+
+    // $ANTLR start "ruleBranchAction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1329:1: ruleBranchAction : ( ( rule__BranchAction__Group__0 ) ) ;
+    public final void ruleBranchAction() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1333:2: ( ( ( rule__BranchAction__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1334:1: ( ( rule__BranchAction__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1334:1: ( ( rule__BranchAction__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1335:1: ( rule__BranchAction__Group__0 )
+            {
+             before(grammarAccess.getBranchActionAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1336:1: ( rule__BranchAction__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1336:2: rule__BranchAction__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__BranchAction__Group__0_in_ruleBranchAction2792);
+            rule__BranchAction__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getBranchActionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleBranchAction"
+
+
+    // $ANTLR start "entryRuleLoopAction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1348:1: entryRuleLoopAction : ruleLoopAction EOF ;
+    public final void entryRuleLoopAction() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1349:1: ( ruleLoopAction EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1350:1: ruleLoopAction EOF
+            {
+             before(grammarAccess.getLoopActionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleLoopAction_in_entryRuleLoopAction2819);
+            ruleLoopAction();
+
+            state._fsp--;
+
+             after(grammarAccess.getLoopActionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLoopAction2826); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleLoopAction"
+
+
+    // $ANTLR start "ruleLoopAction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1357:1: ruleLoopAction : ( ( rule__LoopAction__Group__0 ) ) ;
+    public final void ruleLoopAction() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1361:2: ( ( ( rule__LoopAction__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1362:1: ( ( rule__LoopAction__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1362:1: ( ( rule__LoopAction__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1363:1: ( rule__LoopAction__Group__0 )
+            {
+             before(grammarAccess.getLoopActionAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1364:1: ( rule__LoopAction__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1364:2: rule__LoopAction__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__LoopAction__Group__0_in_ruleLoopAction2852);
+            rule__LoopAction__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getLoopActionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleLoopAction"
+
+
+    // $ANTLR start "entryRuleSequenceAction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1376:1: entryRuleSequenceAction : ruleSequenceAction EOF ;
+    public final void entryRuleSequenceAction() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1377:1: ( ruleSequenceAction EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1378:1: ruleSequenceAction EOF
+            {
+             before(grammarAccess.getSequenceActionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleSequenceAction_in_entryRuleSequenceAction2879);
+            ruleSequenceAction();
+
+            state._fsp--;
+
+             after(grammarAccess.getSequenceActionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSequenceAction2886); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleSequenceAction"
+
+
+    // $ANTLR start "ruleSequenceAction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1385:1: ruleSequenceAction : ( ( rule__SequenceAction__Group__0 ) ) ;
+    public final void ruleSequenceAction() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1389:2: ( ( ( rule__SequenceAction__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1390:1: ( ( rule__SequenceAction__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1390:1: ( ( rule__SequenceAction__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1391:1: ( rule__SequenceAction__Group__0 )
+            {
+             before(grammarAccess.getSequenceActionAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1392:1: ( rule__SequenceAction__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1392:2: rule__SequenceAction__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SequenceAction__Group__0_in_ruleSequenceAction2912);
+            rule__SequenceAction__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSequenceActionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleSequenceAction"
+
+
+    // $ANTLR start "entryRuleStartAction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1404:1: entryRuleStartAction : ruleStartAction EOF ;
+    public final void entryRuleStartAction() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1405:1: ( ruleStartAction EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1406:1: ruleStartAction EOF
+            {
+             before(grammarAccess.getStartActionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleStartAction_in_entryRuleStartAction2939);
+            ruleStartAction();
+
+            state._fsp--;
+
+             after(grammarAccess.getStartActionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleStartAction2946); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleStartAction"
+
+
+    // $ANTLR start "ruleStartAction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1413:1: ruleStartAction : ( ( rule__StartAction__Group__0 ) ) ;
+    public final void ruleStartAction() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1417:2: ( ( ( rule__StartAction__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1418:1: ( ( rule__StartAction__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1418:1: ( ( rule__StartAction__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1419:1: ( rule__StartAction__Group__0 )
+            {
+             before(grammarAccess.getStartActionAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1420:1: ( rule__StartAction__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1420:2: rule__StartAction__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__StartAction__Group__0_in_ruleStartAction2972);
+            rule__StartAction__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getStartActionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleStartAction"
+
+
+    // $ANTLR start "entryRuleStopAction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1432:1: entryRuleStopAction : ruleStopAction EOF ;
+    public final void entryRuleStopAction() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1433:1: ( ruleStopAction EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1434:1: ruleStopAction EOF
+            {
+             before(grammarAccess.getStopActionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleStopAction_in_entryRuleStopAction2999);
+            ruleStopAction();
+
+            state._fsp--;
+
+             after(grammarAccess.getStopActionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleStopAction3006); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleStopAction"
+
+
+    // $ANTLR start "ruleStopAction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1441:1: ruleStopAction : ( ( rule__StopAction__Group__0 ) ) ;
+    public final void ruleStopAction() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1445:2: ( ( ( rule__StopAction__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1446:1: ( ( rule__StopAction__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1446:1: ( ( rule__StopAction__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1447:1: ( rule__StopAction__Group__0 )
+            {
+             before(grammarAccess.getStopActionAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1448:1: ( rule__StopAction__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1448:2: rule__StopAction__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__StopAction__Group__0_in_ruleStopAction3032);
+            rule__StopAction__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getStopActionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleStopAction"
+
+
+    // $ANTLR start "entryRuleTransmitAction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1460:1: entryRuleTransmitAction : ruleTransmitAction EOF ;
+    public final void entryRuleTransmitAction() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1461:1: ( ruleTransmitAction EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1462:1: ruleTransmitAction EOF
+            {
+             before(grammarAccess.getTransmitActionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleTransmitAction_in_entryRuleTransmitAction3059);
+            ruleTransmitAction();
+
+            state._fsp--;
+
+             after(grammarAccess.getTransmitActionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTransmitAction3066); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleTransmitAction"
+
+
+    // $ANTLR start "ruleTransmitAction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1469:1: ruleTransmitAction : ( ( rule__TransmitAction__Group__0 ) ) ;
+    public final void ruleTransmitAction() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1473:2: ( ( ( rule__TransmitAction__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1474:1: ( ( rule__TransmitAction__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1474:1: ( ( rule__TransmitAction__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1475:1: ( rule__TransmitAction__Group__0 )
+            {
+             before(grammarAccess.getTransmitActionAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1476:1: ( rule__TransmitAction__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1476:2: rule__TransmitAction__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__TransmitAction__Group__0_in_ruleTransmitAction3092);
+            rule__TransmitAction__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTransmitActionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTransmitAction"
+
+
+    // $ANTLR start "entryRuleWaitAction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1488:1: entryRuleWaitAction : ruleWaitAction EOF ;
+    public final void entryRuleWaitAction() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1489:1: ( ruleWaitAction EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1490:1: ruleWaitAction EOF
+            {
+             before(grammarAccess.getWaitActionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleWaitAction_in_entryRuleWaitAction3119);
+            ruleWaitAction();
+
+            state._fsp--;
+
+             after(grammarAccess.getWaitActionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleWaitAction3126); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleWaitAction"
+
+
+    // $ANTLR start "ruleWaitAction"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1497:1: ruleWaitAction : ( ( rule__WaitAction__Group__0 ) ) ;
+    public final void ruleWaitAction() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1501:2: ( ( ( rule__WaitAction__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1502:1: ( ( rule__WaitAction__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1502:1: ( ( rule__WaitAction__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1503:1: ( rule__WaitAction__Group__0 )
+            {
+             before(grammarAccess.getWaitActionAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1504:1: ( rule__WaitAction__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1504:2: rule__WaitAction__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__WaitAction__Group__0_in_ruleWaitAction3152);
+            rule__WaitAction__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getWaitActionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleWaitAction"
+
+
+    // $ANTLR start "entryRuleVirtualNode"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1518:1: entryRuleVirtualNode : ruleVirtualNode EOF ;
+    public final void entryRuleVirtualNode() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1519:1: ( ruleVirtualNode EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1520:1: ruleVirtualNode EOF
+            {
+             before(grammarAccess.getVirtualNodeRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleVirtualNode_in_entryRuleVirtualNode3181);
+            ruleVirtualNode();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNodeRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleVirtualNode3188); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleVirtualNode"
+
+
+    // $ANTLR start "ruleVirtualNode"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1527:1: ruleVirtualNode : ( ( rule__VirtualNode__Group__0 ) ) ;
+    public final void ruleVirtualNode() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1531:2: ( ( ( rule__VirtualNode__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1532:1: ( ( rule__VirtualNode__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1532:1: ( ( rule__VirtualNode__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1533:1: ( rule__VirtualNode__Group__0 )
+            {
+             before(grammarAccess.getVirtualNodeAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1534:1: ( rule__VirtualNode__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1534:2: rule__VirtualNode__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNode__Group__0_in_ruleVirtualNode3214);
+            rule__VirtualNode__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNodeAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleVirtualNode"
+
+
+    // $ANTLR start "entryRulePhysicalNode"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1546:1: entryRulePhysicalNode : rulePhysicalNode EOF ;
+    public final void entryRulePhysicalNode() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1547:1: ( rulePhysicalNode EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1548:1: rulePhysicalNode EOF
+            {
+             before(grammarAccess.getPhysicalNodeRule()); 
+            pushFollow(FollowSets000.FOLLOW_rulePhysicalNode_in_entryRulePhysicalNode3241);
+            rulePhysicalNode();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNodeRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePhysicalNode3248); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePhysicalNode"
+
+
+    // $ANTLR start "rulePhysicalNode"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1555:1: rulePhysicalNode : ( ( rule__PhysicalNode__Group__0 ) ) ;
+    public final void rulePhysicalNode() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1559:2: ( ( ( rule__PhysicalNode__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1560:1: ( ( rule__PhysicalNode__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1560:1: ( ( rule__PhysicalNode__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1561:1: ( rule__PhysicalNode__Group__0 )
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1562:1: ( rule__PhysicalNode__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1562:2: rule__PhysicalNode__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNode__Group__0_in_rulePhysicalNode3274);
+            rule__PhysicalNode__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePhysicalNode"
+
+
+    // $ANTLR start "entryRulePhysicalLink"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1574:1: entryRulePhysicalLink : rulePhysicalLink EOF ;
+    public final void entryRulePhysicalLink() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1575:1: ( rulePhysicalLink EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1576:1: rulePhysicalLink EOF
+            {
+             before(grammarAccess.getPhysicalLinkRule()); 
+            pushFollow(FollowSets000.FOLLOW_rulePhysicalLink_in_entryRulePhysicalLink3301);
+            rulePhysicalLink();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalLinkRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePhysicalLink3308); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePhysicalLink"
+
+
+    // $ANTLR start "rulePhysicalLink"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1583:1: rulePhysicalLink : ( ( rule__PhysicalLink__Group__0 ) ) ;
+    public final void rulePhysicalLink() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1587:2: ( ( ( rule__PhysicalLink__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1588:1: ( ( rule__PhysicalLink__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1588:1: ( ( rule__PhysicalLink__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1589:1: ( rule__PhysicalLink__Group__0 )
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1590:1: ( rule__PhysicalLink__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1590:2: rule__PhysicalLink__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLink__Group__0_in_rulePhysicalLink3334);
+            rule__PhysicalLink__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalLinkAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePhysicalLink"
+
+
+    // $ANTLR start "entryRuleVirtualLink"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1602:1: entryRuleVirtualLink : ruleVirtualLink EOF ;
+    public final void entryRuleVirtualLink() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1603:1: ( ruleVirtualLink EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1604:1: ruleVirtualLink EOF
+            {
+             before(grammarAccess.getVirtualLinkRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleVirtualLink_in_entryRuleVirtualLink3361);
+            ruleVirtualLink();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualLinkRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleVirtualLink3368); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleVirtualLink"
+
+
+    // $ANTLR start "ruleVirtualLink"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1611:1: ruleVirtualLink : ( ( rule__VirtualLink__Group__0 ) ) ;
+    public final void ruleVirtualLink() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1615:2: ( ( ( rule__VirtualLink__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1616:1: ( ( rule__VirtualLink__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1616:1: ( ( rule__VirtualLink__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1617:1: ( rule__VirtualLink__Group__0 )
+            {
+             before(grammarAccess.getVirtualLinkAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1618:1: ( rule__VirtualLink__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1618:2: rule__VirtualLink__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLink__Group__0_in_ruleVirtualLink3394);
+            rule__VirtualLink__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualLinkAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleVirtualLink"
+
+
+    // $ANTLR start "entryRuleProtocolsRepository"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1630:1: entryRuleProtocolsRepository : ruleProtocolsRepository EOF ;
+    public final void entryRuleProtocolsRepository() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1631:1: ( ruleProtocolsRepository EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1632:1: ruleProtocolsRepository EOF
+            {
+             before(grammarAccess.getProtocolsRepositoryRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProtocolsRepository_in_entryRuleProtocolsRepository3421);
+            ruleProtocolsRepository();
+
+            state._fsp--;
+
+             after(grammarAccess.getProtocolsRepositoryRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProtocolsRepository3428); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleProtocolsRepository"
+
+
+    // $ANTLR start "ruleProtocolsRepository"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1639:1: ruleProtocolsRepository : ( ( rule__ProtocolsRepository__Group__0 ) ) ;
+    public final void ruleProtocolsRepository() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1643:2: ( ( ( rule__ProtocolsRepository__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1644:1: ( ( rule__ProtocolsRepository__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1644:1: ( ( rule__ProtocolsRepository__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1645:1: ( rule__ProtocolsRepository__Group__0 )
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1646:1: ( rule__ProtocolsRepository__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1646:2: rule__ProtocolsRepository__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProtocolsRepository__Group__0_in_ruleProtocolsRepository3454);
+            rule__ProtocolsRepository__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProtocolsRepositoryAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleProtocolsRepository"
+
+
+    // $ANTLR start "entryRuleRoutesRepository"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1658:1: entryRuleRoutesRepository : ruleRoutesRepository EOF ;
+    public final void entryRuleRoutesRepository() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1659:1: ( ruleRoutesRepository EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1660:1: ruleRoutesRepository EOF
+            {
+             before(grammarAccess.getRoutesRepositoryRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleRoutesRepository_in_entryRuleRoutesRepository3481);
+            ruleRoutesRepository();
+
+            state._fsp--;
+
+             after(grammarAccess.getRoutesRepositoryRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleRoutesRepository3488); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleRoutesRepository"
+
+
+    // $ANTLR start "ruleRoutesRepository"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1667:1: ruleRoutesRepository : ( ( rule__RoutesRepository__Group__0 ) ) ;
+    public final void ruleRoutesRepository() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1671:2: ( ( ( rule__RoutesRepository__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1672:1: ( ( rule__RoutesRepository__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1672:1: ( ( rule__RoutesRepository__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1673:1: ( rule__RoutesRepository__Group__0 )
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1674:1: ( rule__RoutesRepository__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1674:2: rule__RoutesRepository__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__RoutesRepository__Group__0_in_ruleRoutesRepository3514);
+            rule__RoutesRepository__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRoutesRepositoryAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleRoutesRepository"
+
+
+    // $ANTLR start "entryRuleProtocolStack"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1686:1: entryRuleProtocolStack : ruleProtocolStack EOF ;
+    public final void entryRuleProtocolStack() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1687:1: ( ruleProtocolStack EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1688:1: ruleProtocolStack EOF
+            {
+             before(grammarAccess.getProtocolStackRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProtocolStack_in_entryRuleProtocolStack3541);
+            ruleProtocolStack();
+
+            state._fsp--;
+
+             after(grammarAccess.getProtocolStackRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProtocolStack3548); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleProtocolStack"
+
+
+    // $ANTLR start "ruleProtocolStack"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1695:1: ruleProtocolStack : ( ( rule__ProtocolStack__Group__0 ) ) ;
+    public final void ruleProtocolStack() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1699:2: ( ( ( rule__ProtocolStack__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1700:1: ( ( rule__ProtocolStack__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1700:1: ( ( rule__ProtocolStack__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1701:1: ( rule__ProtocolStack__Group__0 )
+            {
+             before(grammarAccess.getProtocolStackAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1702:1: ( rule__ProtocolStack__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1702:2: rule__ProtocolStack__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProtocolStack__Group__0_in_ruleProtocolStack3574);
+            rule__ProtocolStack__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProtocolStackAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleProtocolStack"
+
+
+    // $ANTLR start "entryRuleProtocolLayer"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1714:1: entryRuleProtocolLayer : ruleProtocolLayer EOF ;
+    public final void entryRuleProtocolLayer() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1715:1: ( ruleProtocolLayer EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1716:1: ruleProtocolLayer EOF
+            {
+             before(grammarAccess.getProtocolLayerRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleProtocolLayer_in_entryRuleProtocolLayer3601);
+            ruleProtocolLayer();
+
+            state._fsp--;
+
+             after(grammarAccess.getProtocolLayerRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProtocolLayer3608); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleProtocolLayer"
+
+
+    // $ANTLR start "ruleProtocolLayer"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1723:1: ruleProtocolLayer : ( ( rule__ProtocolLayer__Group__0 ) ) ;
+    public final void ruleProtocolLayer() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1727:2: ( ( ( rule__ProtocolLayer__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1728:1: ( ( rule__ProtocolLayer__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1728:1: ( ( rule__ProtocolLayer__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1729:1: ( rule__ProtocolLayer__Group__0 )
+            {
+             before(grammarAccess.getProtocolLayerAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1730:1: ( rule__ProtocolLayer__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1730:2: rule__ProtocolLayer__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ProtocolLayer__Group__0_in_ruleProtocolLayer3634);
+            rule__ProtocolLayer__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProtocolLayerAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleProtocolLayer"
+
+
+    // $ANTLR start "entryRuleRoute"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1742:1: entryRuleRoute : ruleRoute EOF ;
+    public final void entryRuleRoute() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1743:1: ( ruleRoute EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1744:1: ruleRoute EOF
+            {
+             before(grammarAccess.getRouteRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleRoute_in_entryRuleRoute3661);
+            ruleRoute();
+
+            state._fsp--;
+
+             after(grammarAccess.getRouteRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleRoute3668); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleRoute"
+
+
+    // $ANTLR start "ruleRoute"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1751:1: ruleRoute : ( ( rule__Route__Group__0 ) ) ;
+    public final void ruleRoute() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1755:2: ( ( ( rule__Route__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1756:1: ( ( rule__Route__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1756:1: ( ( rule__Route__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1757:1: ( rule__Route__Group__0 )
+            {
+             before(grammarAccess.getRouteAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1758:1: ( rule__Route__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1758:2: rule__Route__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Route__Group__0_in_ruleRoute3694);
+            rule__Route__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRouteAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleRoute"
+
+
+    // $ANTLR start "entryRuleFlowRoute"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1770:1: entryRuleFlowRoute : ruleFlowRoute EOF ;
+    public final void entryRuleFlowRoute() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1771:1: ( ruleFlowRoute EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1772:1: ruleFlowRoute EOF
+            {
+             before(grammarAccess.getFlowRouteRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleFlowRoute_in_entryRuleFlowRoute3721);
+            ruleFlowRoute();
+
+            state._fsp--;
+
+             after(grammarAccess.getFlowRouteRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFlowRoute3728); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFlowRoute"
+
+
+    // $ANTLR start "ruleFlowRoute"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1779:1: ruleFlowRoute : ( ( rule__FlowRoute__Group__0 ) ) ;
+    public final void ruleFlowRoute() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1783:2: ( ( ( rule__FlowRoute__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1784:1: ( ( rule__FlowRoute__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1784:1: ( ( rule__FlowRoute__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1785:1: ( rule__FlowRoute__Group__0 )
+            {
+             before(grammarAccess.getFlowRouteAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1786:1: ( rule__FlowRoute__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1786:2: rule__FlowRoute__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__FlowRoute__Group__0_in_ruleFlowRoute3754);
+            rule__FlowRoute__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFlowRouteAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFlowRoute"
+
+
+    // $ANTLR start "entryRuleDirection"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1798:1: entryRuleDirection : ruleDirection EOF ;
+    public final void entryRuleDirection() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1799:1: ( ruleDirection EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1800:1: ruleDirection EOF
+            {
+             before(grammarAccess.getDirectionRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleDirection_in_entryRuleDirection3781);
+            ruleDirection();
+
+            state._fsp--;
+
+             after(grammarAccess.getDirectionRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDirection3788); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleDirection"
+
+
+    // $ANTLR start "ruleDirection"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1807:1: ruleDirection : ( ( rule__Direction__Group__0 ) ) ;
+    public final void ruleDirection() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1811:2: ( ( ( rule__Direction__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1812:1: ( ( rule__Direction__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1812:1: ( ( rule__Direction__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1813:1: ( rule__Direction__Group__0 )
+            {
+             before(grammarAccess.getDirectionAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1814:1: ( rule__Direction__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1814:2: rule__Direction__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Direction__Group__0_in_ruleDirection3814);
+            rule__Direction__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDirectionAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleDirection"
+
+
+    // $ANTLR start "entryRuleHop"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1826:1: entryRuleHop : ruleHop EOF ;
+    public final void entryRuleHop() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1827:1: ( ruleHop EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1828:1: ruleHop EOF
+            {
+             before(grammarAccess.getHopRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleHop_in_entryRuleHop3841);
+            ruleHop();
+
+            state._fsp--;
+
+             after(grammarAccess.getHopRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleHop3848); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleHop"
+
+
+    // $ANTLR start "ruleHop"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1835:1: ruleHop : ( ( rule__Hop__Group__0 ) ) ;
+    public final void ruleHop() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1839:2: ( ( ( rule__Hop__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1840:1: ( ( rule__Hop__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1840:1: ( ( rule__Hop__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1841:1: ( rule__Hop__Group__0 )
+            {
+             before(grammarAccess.getHopAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1842:1: ( rule__Hop__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1842:2: rule__Hop__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Hop__Group__0_in_ruleHop3874);
+            rule__Hop__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getHopAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleHop"
+
+
+    // $ANTLR start "entryRuleEIntegerObject"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1854:1: entryRuleEIntegerObject : ruleEIntegerObject EOF ;
+    public final void entryRuleEIntegerObject() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1855:1: ( ruleEIntegerObject EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1856:1: ruleEIntegerObject EOF
+            {
+             before(grammarAccess.getEIntegerObjectRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleEIntegerObject_in_entryRuleEIntegerObject3901);
+            ruleEIntegerObject();
+
+            state._fsp--;
+
+             after(grammarAccess.getEIntegerObjectRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEIntegerObject3908); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleEIntegerObject"
+
+
+    // $ANTLR start "ruleEIntegerObject"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1863:1: ruleEIntegerObject : ( ( rule__EIntegerObject__Group__0 ) ) ;
+    public final void ruleEIntegerObject() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1867:2: ( ( ( rule__EIntegerObject__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1868:1: ( ( rule__EIntegerObject__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1868:1: ( ( rule__EIntegerObject__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1869:1: ( rule__EIntegerObject__Group__0 )
+            {
+             before(grammarAccess.getEIntegerObjectAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1870:1: ( rule__EIntegerObject__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1870:2: rule__EIntegerObject__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EIntegerObject__Group__0_in_ruleEIntegerObject3934);
+            rule__EIntegerObject__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEIntegerObjectAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleEIntegerObject"
+
+
+    // $ANTLR start "entryRulePhysicalNetworkInterface"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1882:1: entryRulePhysicalNetworkInterface : rulePhysicalNetworkInterface EOF ;
+    public final void entryRulePhysicalNetworkInterface() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1883:1: ( rulePhysicalNetworkInterface EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1884:1: rulePhysicalNetworkInterface EOF
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceRule()); 
+            pushFollow(FollowSets000.FOLLOW_rulePhysicalNetworkInterface_in_entryRulePhysicalNetworkInterface3961);
+            rulePhysicalNetworkInterface();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNetworkInterfaceRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePhysicalNetworkInterface3968); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePhysicalNetworkInterface"
+
+
+    // $ANTLR start "rulePhysicalNetworkInterface"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1891:1: rulePhysicalNetworkInterface : ( ( rule__PhysicalNetworkInterface__Group__0 ) ) ;
+    public final void rulePhysicalNetworkInterface() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1895:2: ( ( ( rule__PhysicalNetworkInterface__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1896:1: ( ( rule__PhysicalNetworkInterface__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1896:1: ( ( rule__PhysicalNetworkInterface__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1897:1: ( rule__PhysicalNetworkInterface__Group__0 )
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1898:1: ( rule__PhysicalNetworkInterface__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1898:2: rule__PhysicalNetworkInterface__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterface__Group__0_in_rulePhysicalNetworkInterface3994);
+            rule__PhysicalNetworkInterface__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePhysicalNetworkInterface"
+
+
+    // $ANTLR start "entryRuleVirtualNetworkInterface"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1910:1: entryRuleVirtualNetworkInterface : ruleVirtualNetworkInterface EOF ;
+    public final void entryRuleVirtualNetworkInterface() throws RecognitionException {
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1911:1: ( ruleVirtualNetworkInterface EOF )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1912:1: ruleVirtualNetworkInterface EOF
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceRule()); 
+            pushFollow(FollowSets000.FOLLOW_ruleVirtualNetworkInterface_in_entryRuleVirtualNetworkInterface4021);
+            ruleVirtualNetworkInterface();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNetworkInterfaceRule()); 
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleVirtualNetworkInterface4028); 
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleVirtualNetworkInterface"
+
+
+    // $ANTLR start "ruleVirtualNetworkInterface"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1919:1: ruleVirtualNetworkInterface : ( ( rule__VirtualNetworkInterface__Group__0 ) ) ;
+    public final void ruleVirtualNetworkInterface() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1923:2: ( ( ( rule__VirtualNetworkInterface__Group__0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1924:1: ( ( rule__VirtualNetworkInterface__Group__0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1924:1: ( ( rule__VirtualNetworkInterface__Group__0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1925:1: ( rule__VirtualNetworkInterface__Group__0 )
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1926:1: ( rule__VirtualNetworkInterface__Group__0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1926:2: rule__VirtualNetworkInterface__Group__0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterface__Group__0_in_ruleVirtualNetworkInterface4054);
+            rule__VirtualNetworkInterface__Group__0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleVirtualNetworkInterface"
+
+
+    // $ANTLR start "ruleUnitPrefix"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1939:1: ruleUnitPrefix : ( ( rule__UnitPrefix__Alternatives ) ) ;
+    public final void ruleUnitPrefix() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1943:1: ( ( ( rule__UnitPrefix__Alternatives ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1944:1: ( ( rule__UnitPrefix__Alternatives ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1944:1: ( ( rule__UnitPrefix__Alternatives ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1945:1: ( rule__UnitPrefix__Alternatives )
+            {
+             before(grammarAccess.getUnitPrefixAccess().getAlternatives()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1946:1: ( rule__UnitPrefix__Alternatives )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1946:2: rule__UnitPrefix__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__UnitPrefix__Alternatives_in_ruleUnitPrefix4091);
+            rule__UnitPrefix__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getUnitPrefixAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleUnitPrefix"
+
+
+    // $ANTLR start "ruleSpeed"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1958:1: ruleSpeed : ( ( rule__Speed__Alternatives ) ) ;
+    public final void ruleSpeed() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1962:1: ( ( ( rule__Speed__Alternatives ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1963:1: ( ( rule__Speed__Alternatives ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1963:1: ( ( rule__Speed__Alternatives ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1964:1: ( rule__Speed__Alternatives )
+            {
+             before(grammarAccess.getSpeedAccess().getAlternatives()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1965:1: ( rule__Speed__Alternatives )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1965:2: rule__Speed__Alternatives
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__Speed__Alternatives_in_ruleSpeed4127);
+            rule__Speed__Alternatives();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSpeedAccess().getAlternatives()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleSpeed"
+
+
+    // $ANTLR start "rule__Flow__Alternatives"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1976:1: rule__Flow__Alternatives : ( ( ruleONOFFFlow ) | ( ruleGenericFlow ) );
+    public final void rule__Flow__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1980:1: ( ( ruleONOFFFlow ) | ( ruleGenericFlow ) )
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0==159) ) {
+                alt1=1;
+            }
+            else if ( (LA1_0==80) ) {
+                alt1=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 1, 0, input);
+
+                throw nvae;
+            }
+            switch (alt1) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1981:1: ( ruleONOFFFlow )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1981:1: ( ruleONOFFFlow )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1982:1: ruleONOFFFlow
+                    {
+                     before(grammarAccess.getFlowAccess().getONOFFFlowParserRuleCall_0()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleONOFFFlow_in_rule__Flow__Alternatives4162);
+                    ruleONOFFFlow();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getFlowAccess().getONOFFFlowParserRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1987:6: ( ruleGenericFlow )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1987:6: ( ruleGenericFlow )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1988:1: ruleGenericFlow
+                    {
+                     before(grammarAccess.getFlowAccess().getGenericFlowParserRuleCall_1()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleGenericFlow_in_rule__Flow__Alternatives4179);
+                    ruleGenericFlow();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getFlowAccess().getGenericFlowParserRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Flow__Alternatives"
+
+
+    // $ANTLR start "rule__Node__Alternatives"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:1998:1: rule__Node__Alternatives : ( ( ruleVirtualNode ) | ( rulePhysicalNode ) );
+    public final void rule__Node__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2002:1: ( ( ruleVirtualNode ) | ( rulePhysicalNode ) )
+            int alt2=2;
+            int LA2_0 = input.LA(1);
+
+            if ( (LA2_0==120) ) {
+                alt2=1;
+            }
+            else if ( (LA2_0==126) ) {
+                alt2=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 2, 0, input);
+
+                throw nvae;
+            }
+            switch (alt2) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2003:1: ( ruleVirtualNode )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2003:1: ( ruleVirtualNode )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2004:1: ruleVirtualNode
+                    {
+                     before(grammarAccess.getNodeAccess().getVirtualNodeParserRuleCall_0()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleVirtualNode_in_rule__Node__Alternatives4211);
+                    ruleVirtualNode();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getNodeAccess().getVirtualNodeParserRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2009:6: ( rulePhysicalNode )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2009:6: ( rulePhysicalNode )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2010:1: rulePhysicalNode
+                    {
+                     before(grammarAccess.getNodeAccess().getPhysicalNodeParserRuleCall_1()); 
+                    pushFollow(FollowSets000.FOLLOW_rulePhysicalNode_in_rule__Node__Alternatives4228);
+                    rulePhysicalNode();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getNodeAccess().getPhysicalNodeParserRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Node__Alternatives"
+
+
+    // $ANTLR start "rule__Link__Alternatives"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2020:1: rule__Link__Alternatives : ( ( rulePhysicalLink ) | ( ruleVirtualLink ) );
+    public final void rule__Link__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2024:1: ( ( rulePhysicalLink ) | ( ruleVirtualLink ) )
+            int alt3=2;
+            int LA3_0 = input.LA(1);
+
+            if ( (LA3_0==128) ) {
+                alt3=1;
+            }
+            else if ( (LA3_0==130) ) {
+                alt3=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 3, 0, input);
+
+                throw nvae;
+            }
+            switch (alt3) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2025:1: ( rulePhysicalLink )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2025:1: ( rulePhysicalLink )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2026:1: rulePhysicalLink
+                    {
+                     before(grammarAccess.getLinkAccess().getPhysicalLinkParserRuleCall_0()); 
+                    pushFollow(FollowSets000.FOLLOW_rulePhysicalLink_in_rule__Link__Alternatives4260);
+                    rulePhysicalLink();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getLinkAccess().getPhysicalLinkParserRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2031:6: ( ruleVirtualLink )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2031:6: ( ruleVirtualLink )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2032:1: ruleVirtualLink
+                    {
+                     before(grammarAccess.getLinkAccess().getVirtualLinkParserRuleCall_1()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleVirtualLink_in_rule__Link__Alternatives4277);
+                    ruleVirtualLink();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getLinkAccess().getVirtualLinkParserRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Link__Alternatives"
+
+
+    // $ANTLR start "rule__Dependency__Alternatives"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2042:1: rule__Dependency__Alternatives : ( ( ruleConstantDoubleVariable ) | ( ruleConstantLongVariable ) | ( ruleRandomVariable ) | ( ruleContinuousFunction ) | ( ruleDiscreteFunction ) );
+    public final void rule__Dependency__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2046:1: ( ( ruleConstantDoubleVariable ) | ( ruleConstantLongVariable ) | ( ruleRandomVariable ) | ( ruleContinuousFunction ) | ( ruleDiscreteFunction ) )
+            int alt4=5;
+            switch ( input.LA(1) ) {
+            case 88:
+                {
+                alt4=1;
+                }
+                break;
+            case 90:
+                {
+                alt4=2;
+                }
+                break;
+            case 91:
+                {
+                alt4=3;
+                }
+                break;
+            case 93:
+                {
+                alt4=4;
+                }
+                break;
+            case 96:
+                {
+                alt4=5;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 4, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt4) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2047:1: ( ruleConstantDoubleVariable )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2047:1: ( ruleConstantDoubleVariable )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2048:1: ruleConstantDoubleVariable
+                    {
+                     before(grammarAccess.getDependencyAccess().getConstantDoubleVariableParserRuleCall_0()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleConstantDoubleVariable_in_rule__Dependency__Alternatives4309);
+                    ruleConstantDoubleVariable();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getDependencyAccess().getConstantDoubleVariableParserRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2053:6: ( ruleConstantLongVariable )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2053:6: ( ruleConstantLongVariable )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2054:1: ruleConstantLongVariable
+                    {
+                     before(grammarAccess.getDependencyAccess().getConstantLongVariableParserRuleCall_1()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleConstantLongVariable_in_rule__Dependency__Alternatives4326);
+                    ruleConstantLongVariable();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getDependencyAccess().getConstantLongVariableParserRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2059:6: ( ruleRandomVariable )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2059:6: ( ruleRandomVariable )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2060:1: ruleRandomVariable
+                    {
+                     before(grammarAccess.getDependencyAccess().getRandomVariableParserRuleCall_2()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleRandomVariable_in_rule__Dependency__Alternatives4343);
+                    ruleRandomVariable();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getDependencyAccess().getRandomVariableParserRuleCall_2()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2065:6: ( ruleContinuousFunction )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2065:6: ( ruleContinuousFunction )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2066:1: ruleContinuousFunction
+                    {
+                     before(grammarAccess.getDependencyAccess().getContinuousFunctionParserRuleCall_3()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleContinuousFunction_in_rule__Dependency__Alternatives4360);
+                    ruleContinuousFunction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getDependencyAccess().getContinuousFunctionParserRuleCall_3()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2071:6: ( ruleDiscreteFunction )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2071:6: ( ruleDiscreteFunction )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2072:1: ruleDiscreteFunction
+                    {
+                     before(grammarAccess.getDependencyAccess().getDiscreteFunctionParserRuleCall_4()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleDiscreteFunction_in_rule__Dependency__Alternatives4377);
+                    ruleDiscreteFunction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getDependencyAccess().getDiscreteFunctionParserRuleCall_4()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Dependency__Alternatives"
+
+
+    // $ANTLR start "rule__Function__Alternatives"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2082:1: rule__Function__Alternatives : ( ( ruleContinuousFunction ) | ( ruleDiscreteFunction ) );
+    public final void rule__Function__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2086:1: ( ( ruleContinuousFunction ) | ( ruleDiscreteFunction ) )
+            int alt5=2;
+            int LA5_0 = input.LA(1);
+
+            if ( (LA5_0==93) ) {
+                alt5=1;
+            }
+            else if ( (LA5_0==96) ) {
+                alt5=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 5, 0, input);
+
+                throw nvae;
+            }
+            switch (alt5) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2087:1: ( ruleContinuousFunction )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2087:1: ( ruleContinuousFunction )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2088:1: ruleContinuousFunction
+                    {
+                     before(grammarAccess.getFunctionAccess().getContinuousFunctionParserRuleCall_0()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleContinuousFunction_in_rule__Function__Alternatives4409);
+                    ruleContinuousFunction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getFunctionAccess().getContinuousFunctionParserRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2093:6: ( ruleDiscreteFunction )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2093:6: ( ruleDiscreteFunction )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2094:1: ruleDiscreteFunction
+                    {
+                     before(grammarAccess.getFunctionAccess().getDiscreteFunctionParserRuleCall_1()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleDiscreteFunction_in_rule__Function__Alternatives4426);
+                    ruleDiscreteFunction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getFunctionAccess().getDiscreteFunctionParserRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Function__Alternatives"
+
+
+    // $ANTLR start "rule__AbstractAction__Alternatives"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2104:1: rule__AbstractAction__Alternatives : ( ( ruleBranchAction ) | ( ruleLoopAction ) | ( ruleSequenceAction ) | ( ruleStartAction ) | ( ruleStopAction ) | ( ruleTransmitAction ) | ( ruleWaitAction ) );
+    public final void rule__AbstractAction__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2108:1: ( ( ruleBranchAction ) | ( ruleLoopAction ) | ( ruleSequenceAction ) | ( ruleStartAction ) | ( ruleStopAction ) | ( ruleTransmitAction ) | ( ruleWaitAction ) )
+            int alt6=7;
+            switch ( input.LA(1) ) {
+            case 109:
+                {
+                alt6=1;
+                }
+                break;
+            case 111:
+                {
+                alt6=2;
+                }
+                break;
+            case 113:
+                {
+                alt6=3;
+                }
+                break;
+            case 114:
+                {
+                alt6=4;
+                }
+                break;
+            case 115:
+                {
+                alt6=5;
+                }
+                break;
+            case 116:
+                {
+                alt6=6;
+                }
+                break;
+            case 118:
+                {
+                alt6=7;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 6, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt6) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2109:1: ( ruleBranchAction )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2109:1: ( ruleBranchAction )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2110:1: ruleBranchAction
+                    {
+                     before(grammarAccess.getAbstractActionAccess().getBranchActionParserRuleCall_0()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleBranchAction_in_rule__AbstractAction__Alternatives4458);
+                    ruleBranchAction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getAbstractActionAccess().getBranchActionParserRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2115:6: ( ruleLoopAction )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2115:6: ( ruleLoopAction )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2116:1: ruleLoopAction
+                    {
+                     before(grammarAccess.getAbstractActionAccess().getLoopActionParserRuleCall_1()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleLoopAction_in_rule__AbstractAction__Alternatives4475);
+                    ruleLoopAction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getAbstractActionAccess().getLoopActionParserRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2121:6: ( ruleSequenceAction )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2121:6: ( ruleSequenceAction )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2122:1: ruleSequenceAction
+                    {
+                     before(grammarAccess.getAbstractActionAccess().getSequenceActionParserRuleCall_2()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleSequenceAction_in_rule__AbstractAction__Alternatives4492);
+                    ruleSequenceAction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getAbstractActionAccess().getSequenceActionParserRuleCall_2()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2127:6: ( ruleStartAction )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2127:6: ( ruleStartAction )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2128:1: ruleStartAction
+                    {
+                     before(grammarAccess.getAbstractActionAccess().getStartActionParserRuleCall_3()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleStartAction_in_rule__AbstractAction__Alternatives4509);
+                    ruleStartAction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getAbstractActionAccess().getStartActionParserRuleCall_3()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2133:6: ( ruleStopAction )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2133:6: ( ruleStopAction )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2134:1: ruleStopAction
+                    {
+                     before(grammarAccess.getAbstractActionAccess().getStopActionParserRuleCall_4()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleStopAction_in_rule__AbstractAction__Alternatives4526);
+                    ruleStopAction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getAbstractActionAccess().getStopActionParserRuleCall_4()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2139:6: ( ruleTransmitAction )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2139:6: ( ruleTransmitAction )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2140:1: ruleTransmitAction
+                    {
+                     before(grammarAccess.getAbstractActionAccess().getTransmitActionParserRuleCall_5()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleTransmitAction_in_rule__AbstractAction__Alternatives4543);
+                    ruleTransmitAction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getAbstractActionAccess().getTransmitActionParserRuleCall_5()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2145:6: ( ruleWaitAction )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2145:6: ( ruleWaitAction )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2146:1: ruleWaitAction
+                    {
+                     before(grammarAccess.getAbstractActionAccess().getWaitActionParserRuleCall_6()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleWaitAction_in_rule__AbstractAction__Alternatives4560);
+                    ruleWaitAction();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getAbstractActionAccess().getWaitActionParserRuleCall_6()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__AbstractAction__Alternatives"
+
+
+    // $ANTLR start "rule__PerformanceSpecification__Alternatives"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2156:1: rule__PerformanceSpecification__Alternatives : ( ( ruleIntermediateNodePerfSpec ) | ( ruleEndNodePerfSpec ) | ( ruleLinkPerfSpec ) | ( ruleNetworkInterfacePerfSpec ) );
+    public final void rule__PerformanceSpecification__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2160:1: ( ( ruleIntermediateNodePerfSpec ) | ( ruleEndNodePerfSpec ) | ( ruleLinkPerfSpec ) | ( ruleNetworkInterfacePerfSpec ) )
+            int alt7=4;
+            switch ( input.LA(1) ) {
+            case 42:
+                {
+                alt7=1;
+                }
+                break;
+            case 51:
+                {
+                alt7=2;
+                }
+                break;
+            case 38:
+            case 41:
+                {
+                alt7=3;
+                }
+                break;
+            case 32:
+            case 37:
+                {
+                alt7=4;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 7, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt7) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2161:1: ( ruleIntermediateNodePerfSpec )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2161:1: ( ruleIntermediateNodePerfSpec )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2162:1: ruleIntermediateNodePerfSpec
+                    {
+                     before(grammarAccess.getPerformanceSpecificationAccess().getIntermediateNodePerfSpecParserRuleCall_0()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleIntermediateNodePerfSpec_in_rule__PerformanceSpecification__Alternatives4592);
+                    ruleIntermediateNodePerfSpec();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getPerformanceSpecificationAccess().getIntermediateNodePerfSpecParserRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2167:6: ( ruleEndNodePerfSpec )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2167:6: ( ruleEndNodePerfSpec )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2168:1: ruleEndNodePerfSpec
+                    {
+                     before(grammarAccess.getPerformanceSpecificationAccess().getEndNodePerfSpecParserRuleCall_1()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleEndNodePerfSpec_in_rule__PerformanceSpecification__Alternatives4609);
+                    ruleEndNodePerfSpec();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getPerformanceSpecificationAccess().getEndNodePerfSpecParserRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2173:6: ( ruleLinkPerfSpec )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2173:6: ( ruleLinkPerfSpec )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2174:1: ruleLinkPerfSpec
+                    {
+                     before(grammarAccess.getPerformanceSpecificationAccess().getLinkPerfSpecParserRuleCall_2()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleLinkPerfSpec_in_rule__PerformanceSpecification__Alternatives4626);
+                    ruleLinkPerfSpec();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getPerformanceSpecificationAccess().getLinkPerfSpecParserRuleCall_2()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2179:6: ( ruleNetworkInterfacePerfSpec )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2179:6: ( ruleNetworkInterfacePerfSpec )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2180:1: ruleNetworkInterfacePerfSpec
+                    {
+                     before(grammarAccess.getPerformanceSpecificationAccess().getNetworkInterfacePerfSpecParserRuleCall_3()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleNetworkInterfacePerfSpec_in_rule__PerformanceSpecification__Alternatives4643);
+                    ruleNetworkInterfacePerfSpec();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getPerformanceSpecificationAccess().getNetworkInterfacePerfSpecParserRuleCall_3()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PerformanceSpecification__Alternatives"
+
+
+    // $ANTLR start "rule__NetworkInterfacePerfSpec__Alternatives"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2190:1: rule__NetworkInterfacePerfSpec__Alternatives : ( ( rulePhysicalNetworkInterfacePerfSpec ) | ( ruleVirtualNetworkInterfacePerfSpec ) );
+    public final void rule__NetworkInterfacePerfSpec__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2194:1: ( ( rulePhysicalNetworkInterfacePerfSpec ) | ( ruleVirtualNetworkInterfacePerfSpec ) )
+            int alt8=2;
+            int LA8_0 = input.LA(1);
+
+            if ( (LA8_0==37) ) {
+                alt8=1;
+            }
+            else if ( (LA8_0==32) ) {
+                alt8=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 8, 0, input);
+
+                throw nvae;
+            }
+            switch (alt8) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2195:1: ( rulePhysicalNetworkInterfacePerfSpec )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2195:1: ( rulePhysicalNetworkInterfacePerfSpec )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2196:1: rulePhysicalNetworkInterfacePerfSpec
+                    {
+                     before(grammarAccess.getNetworkInterfacePerfSpecAccess().getPhysicalNetworkInterfacePerfSpecParserRuleCall_0()); 
+                    pushFollow(FollowSets000.FOLLOW_rulePhysicalNetworkInterfacePerfSpec_in_rule__NetworkInterfacePerfSpec__Alternatives4675);
+                    rulePhysicalNetworkInterfacePerfSpec();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getNetworkInterfacePerfSpecAccess().getPhysicalNetworkInterfacePerfSpecParserRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2201:6: ( ruleVirtualNetworkInterfacePerfSpec )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2201:6: ( ruleVirtualNetworkInterfacePerfSpec )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2202:1: ruleVirtualNetworkInterfacePerfSpec
+                    {
+                     before(grammarAccess.getNetworkInterfacePerfSpecAccess().getVirtualNetworkInterfacePerfSpecParserRuleCall_1()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleVirtualNetworkInterfacePerfSpec_in_rule__NetworkInterfacePerfSpec__Alternatives4692);
+                    ruleVirtualNetworkInterfacePerfSpec();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getNetworkInterfacePerfSpecAccess().getVirtualNetworkInterfacePerfSpecParserRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInterfacePerfSpec__Alternatives"
+
+
+    // $ANTLR start "rule__LinkPerfSpec__Alternatives"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2212:1: rule__LinkPerfSpec__Alternatives : ( ( rulePhysicalLinkPerfSpec ) | ( ruleVirtualLinkPerfSpec ) );
+    public final void rule__LinkPerfSpec__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2216:1: ( ( rulePhysicalLinkPerfSpec ) | ( ruleVirtualLinkPerfSpec ) )
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0==41) ) {
+                alt9=1;
+            }
+            else if ( (LA9_0==38) ) {
+                alt9=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 9, 0, input);
+
+                throw nvae;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2217:1: ( rulePhysicalLinkPerfSpec )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2217:1: ( rulePhysicalLinkPerfSpec )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2218:1: rulePhysicalLinkPerfSpec
+                    {
+                     before(grammarAccess.getLinkPerfSpecAccess().getPhysicalLinkPerfSpecParserRuleCall_0()); 
+                    pushFollow(FollowSets000.FOLLOW_rulePhysicalLinkPerfSpec_in_rule__LinkPerfSpec__Alternatives4724);
+                    rulePhysicalLinkPerfSpec();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getLinkPerfSpecAccess().getPhysicalLinkPerfSpecParserRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2223:6: ( ruleVirtualLinkPerfSpec )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2223:6: ( ruleVirtualLinkPerfSpec )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2224:1: ruleVirtualLinkPerfSpec
+                    {
+                     before(grammarAccess.getLinkPerfSpecAccess().getVirtualLinkPerfSpecParserRuleCall_1()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleVirtualLinkPerfSpec_in_rule__LinkPerfSpec__Alternatives4741);
+                    ruleVirtualLinkPerfSpec();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getLinkPerfSpecAccess().getVirtualLinkPerfSpecParserRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LinkPerfSpec__Alternatives"
+
+
+    // $ANTLR start "rule__NetworkInterface__Alternatives"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2234:1: rule__NetworkInterface__Alternatives : ( ( rulePhysicalNetworkInterface ) | ( ruleVirtualNetworkInterface ) );
+    public final void rule__NetworkInterface__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2238:1: ( ( rulePhysicalNetworkInterface ) | ( ruleVirtualNetworkInterface ) )
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+
+            if ( (LA10_0==156) ) {
+                alt10=1;
+            }
+            else if ( (LA10_0==158) ) {
+                alt10=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 10, 0, input);
+
+                throw nvae;
+            }
+            switch (alt10) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2239:1: ( rulePhysicalNetworkInterface )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2239:1: ( rulePhysicalNetworkInterface )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2240:1: rulePhysicalNetworkInterface
+                    {
+                     before(grammarAccess.getNetworkInterfaceAccess().getPhysicalNetworkInterfaceParserRuleCall_0()); 
+                    pushFollow(FollowSets000.FOLLOW_rulePhysicalNetworkInterface_in_rule__NetworkInterface__Alternatives4773);
+                    rulePhysicalNetworkInterface();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getNetworkInterfaceAccess().getPhysicalNetworkInterfaceParserRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2245:6: ( ruleVirtualNetworkInterface )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2245:6: ( ruleVirtualNetworkInterface )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2246:1: ruleVirtualNetworkInterface
+                    {
+                     before(grammarAccess.getNetworkInterfaceAccess().getVirtualNetworkInterfaceParserRuleCall_1()); 
+                    pushFollow(FollowSets000.FOLLOW_ruleVirtualNetworkInterface_in_rule__NetworkInterface__Alternatives4790);
+                    ruleVirtualNetworkInterface();
+
+                    state._fsp--;
+
+                     after(grammarAccess.getNetworkInterfaceAccess().getVirtualNetworkInterfaceParserRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInterface__Alternatives"
+
+
+    // $ANTLR start "rule__EString__Alternatives"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2256:1: rule__EString__Alternatives : ( ( RULE_STRING ) | ( RULE_ID ) );
+    public final void rule__EString__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2260:1: ( ( RULE_STRING ) | ( RULE_ID ) )
+            int alt11=2;
+            int LA11_0 = input.LA(1);
+
+            if ( (LA11_0==RULE_STRING) ) {
+                alt11=1;
+            }
+            else if ( (LA11_0==RULE_ID) ) {
+                alt11=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 11, 0, input);
+
+                throw nvae;
+            }
+            switch (alt11) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2261:1: ( RULE_STRING )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2261:1: ( RULE_STRING )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2262:1: RULE_STRING
+                    {
+                     before(grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); 
+                    match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_rule__EString__Alternatives4822); 
+                     after(grammarAccess.getEStringAccess().getSTRINGTerminalRuleCall_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2267:6: ( RULE_ID )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2267:6: ( RULE_ID )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2268:1: RULE_ID
+                    {
+                     before(grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); 
+                    match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_rule__EString__Alternatives4839); 
+                     after(grammarAccess.getEStringAccess().getIDTerminalRuleCall_1()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EString__Alternatives"
+
+
+    // $ANTLR start "rule__EBoolean__Alternatives"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2278:1: rule__EBoolean__Alternatives : ( ( 'true' ) | ( 'false' ) );
+    public final void rule__EBoolean__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2282:1: ( ( 'true' ) | ( 'false' ) )
+            int alt12=2;
+            int LA12_0 = input.LA(1);
+
+            if ( (LA12_0==11) ) {
+                alt12=1;
+            }
+            else if ( (LA12_0==12) ) {
+                alt12=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 12, 0, input);
+
+                throw nvae;
+            }
+            switch (alt12) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2283:1: ( 'true' )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2283:1: ( 'true' )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2284:1: 'true'
+                    {
+                     before(grammarAccess.getEBooleanAccess().getTrueKeyword_0()); 
+                    match(input,11,FollowSets000.FOLLOW_11_in_rule__EBoolean__Alternatives4872); 
+                     after(grammarAccess.getEBooleanAccess().getTrueKeyword_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2291:6: ( 'false' )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2291:6: ( 'false' )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2292:1: 'false'
+                    {
+                     before(grammarAccess.getEBooleanAccess().getFalseKeyword_1()); 
+                    match(input,12,FollowSets000.FOLLOW_12_in_rule__EBoolean__Alternatives4892); 
+                     after(grammarAccess.getEBooleanAccess().getFalseKeyword_1()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EBoolean__Alternatives"
+
+
+    // $ANTLR start "rule__EFloat__Alternatives_4_0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2304:1: rule__EFloat__Alternatives_4_0 : ( ( 'E' ) | ( 'e' ) );
+    public final void rule__EFloat__Alternatives_4_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2308:1: ( ( 'E' ) | ( 'e' ) )
+            int alt13=2;
+            int LA13_0 = input.LA(1);
+
+            if ( (LA13_0==13) ) {
+                alt13=1;
+            }
+            else if ( (LA13_0==14) ) {
+                alt13=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 13, 0, input);
+
+                throw nvae;
+            }
+            switch (alt13) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2309:1: ( 'E' )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2309:1: ( 'E' )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2310:1: 'E'
+                    {
+                     before(grammarAccess.getEFloatAccess().getEKeyword_4_0_0()); 
+                    match(input,13,FollowSets000.FOLLOW_13_in_rule__EFloat__Alternatives_4_04927); 
+                     after(grammarAccess.getEFloatAccess().getEKeyword_4_0_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2317:6: ( 'e' )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2317:6: ( 'e' )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2318:1: 'e'
+                    {
+                     before(grammarAccess.getEFloatAccess().getEKeyword_4_0_1()); 
+                    match(input,14,FollowSets000.FOLLOW_14_in_rule__EFloat__Alternatives_4_04947); 
+                     after(grammarAccess.getEFloatAccess().getEKeyword_4_0_1()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EFloat__Alternatives_4_0"
+
+
+    // $ANTLR start "rule__EDouble__Alternatives_4_0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2330:1: rule__EDouble__Alternatives_4_0 : ( ( 'E' ) | ( 'e' ) );
+    public final void rule__EDouble__Alternatives_4_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2334:1: ( ( 'E' ) | ( 'e' ) )
+            int alt14=2;
+            int LA14_0 = input.LA(1);
+
+            if ( (LA14_0==13) ) {
+                alt14=1;
+            }
+            else if ( (LA14_0==14) ) {
+                alt14=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 14, 0, input);
+
+                throw nvae;
+            }
+            switch (alt14) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2335:1: ( 'E' )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2335:1: ( 'E' )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2336:1: 'E'
+                    {
+                     before(grammarAccess.getEDoubleAccess().getEKeyword_4_0_0()); 
+                    match(input,13,FollowSets000.FOLLOW_13_in_rule__EDouble__Alternatives_4_04982); 
+                     after(grammarAccess.getEDoubleAccess().getEKeyword_4_0_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2343:6: ( 'e' )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2343:6: ( 'e' )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2344:1: 'e'
+                    {
+                     before(grammarAccess.getEDoubleAccess().getEKeyword_4_0_1()); 
+                    match(input,14,FollowSets000.FOLLOW_14_in_rule__EDouble__Alternatives_4_05002); 
+                     after(grammarAccess.getEDoubleAccess().getEKeyword_4_0_1()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EDouble__Alternatives_4_0"
+
+
+    // $ANTLR start "rule__UnitPrefix__Alternatives"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2356:1: rule__UnitPrefix__Alternatives : ( ( ( 'none' ) ) | ( ( 'K' ) ) | ( ( 'M' ) ) | ( ( 'G' ) ) );
+    public final void rule__UnitPrefix__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2360:1: ( ( ( 'none' ) ) | ( ( 'K' ) ) | ( ( 'M' ) ) | ( ( 'G' ) ) )
+            int alt15=4;
+            switch ( input.LA(1) ) {
+            case 15:
+                {
+                alt15=1;
+                }
+                break;
+            case 16:
+                {
+                alt15=2;
+                }
+                break;
+            case 17:
+                {
+                alt15=3;
+                }
+                break;
+            case 18:
+                {
+                alt15=4;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 15, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt15) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2361:1: ( ( 'none' ) )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2361:1: ( ( 'none' ) )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2362:1: ( 'none' )
+                    {
+                     before(grammarAccess.getUnitPrefixAccess().getNoneEnumLiteralDeclaration_0()); 
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2363:1: ( 'none' )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2363:3: 'none'
+                    {
+                    match(input,15,FollowSets000.FOLLOW_15_in_rule__UnitPrefix__Alternatives5037); 
+
+                    }
+
+                     after(grammarAccess.getUnitPrefixAccess().getNoneEnumLiteralDeclaration_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2368:6: ( ( 'K' ) )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2368:6: ( ( 'K' ) )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2369:1: ( 'K' )
+                    {
+                     before(grammarAccess.getUnitPrefixAccess().getKEnumLiteralDeclaration_1()); 
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2370:1: ( 'K' )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2370:3: 'K'
+                    {
+                    match(input,16,FollowSets000.FOLLOW_16_in_rule__UnitPrefix__Alternatives5058); 
+
+                    }
+
+                     after(grammarAccess.getUnitPrefixAccess().getKEnumLiteralDeclaration_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2375:6: ( ( 'M' ) )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2375:6: ( ( 'M' ) )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2376:1: ( 'M' )
+                    {
+                     before(grammarAccess.getUnitPrefixAccess().getMEnumLiteralDeclaration_2()); 
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2377:1: ( 'M' )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2377:3: 'M'
+                    {
+                    match(input,17,FollowSets000.FOLLOW_17_in_rule__UnitPrefix__Alternatives5079); 
+
+                    }
+
+                     after(grammarAccess.getUnitPrefixAccess().getMEnumLiteralDeclaration_2()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2382:6: ( ( 'G' ) )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2382:6: ( ( 'G' ) )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2383:1: ( 'G' )
+                    {
+                     before(grammarAccess.getUnitPrefixAccess().getGEnumLiteralDeclaration_3()); 
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2384:1: ( 'G' )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2384:3: 'G'
+                    {
+                    match(input,18,FollowSets000.FOLLOW_18_in_rule__UnitPrefix__Alternatives5100); 
+
+                    }
+
+                     after(grammarAccess.getUnitPrefixAccess().getGEnumLiteralDeclaration_3()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__UnitPrefix__Alternatives"
+
+
+    // $ANTLR start "rule__Speed__Alternatives"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2394:1: rule__Speed__Alternatives : ( ( ( 'BytesPerSec' ) ) | ( ( 'bitsPerSec' ) ) | ( ( 'packetsPerSec' ) ) );
+    public final void rule__Speed__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2398:1: ( ( ( 'BytesPerSec' ) ) | ( ( 'bitsPerSec' ) ) | ( ( 'packetsPerSec' ) ) )
+            int alt16=3;
+            switch ( input.LA(1) ) {
+            case 19:
+                {
+                alt16=1;
+                }
+                break;
+            case 20:
+                {
+                alt16=2;
+                }
+                break;
+            case 21:
+                {
+                alt16=3;
+                }
+                break;
+            default:
+                NoViableAltException nvae =
+                    new NoViableAltException("", 16, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt16) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2399:1: ( ( 'BytesPerSec' ) )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2399:1: ( ( 'BytesPerSec' ) )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2400:1: ( 'BytesPerSec' )
+                    {
+                     before(grammarAccess.getSpeedAccess().getBytesPerSecEnumLiteralDeclaration_0()); 
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2401:1: ( 'BytesPerSec' )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2401:3: 'BytesPerSec'
+                    {
+                    match(input,19,FollowSets000.FOLLOW_19_in_rule__Speed__Alternatives5136); 
+
+                    }
+
+                     after(grammarAccess.getSpeedAccess().getBytesPerSecEnumLiteralDeclaration_0()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2406:6: ( ( 'bitsPerSec' ) )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2406:6: ( ( 'bitsPerSec' ) )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2407:1: ( 'bitsPerSec' )
+                    {
+                     before(grammarAccess.getSpeedAccess().getBitsPerSecEnumLiteralDeclaration_1()); 
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2408:1: ( 'bitsPerSec' )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2408:3: 'bitsPerSec'
+                    {
+                    match(input,20,FollowSets000.FOLLOW_20_in_rule__Speed__Alternatives5157); 
+
+                    }
+
+                     after(grammarAccess.getSpeedAccess().getBitsPerSecEnumLiteralDeclaration_1()); 
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2413:6: ( ( 'packetsPerSec' ) )
+                    {
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2413:6: ( ( 'packetsPerSec' ) )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2414:1: ( 'packetsPerSec' )
+                    {
+                     before(grammarAccess.getSpeedAccess().getPacketsPerSecEnumLiteralDeclaration_2()); 
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2415:1: ( 'packetsPerSec' )
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2415:3: 'packetsPerSec'
+                    {
+                    match(input,21,FollowSets000.FOLLOW_21_in_rule__Speed__Alternatives5178); 
+
+                    }
+
+                     after(grammarAccess.getSpeedAccess().getPacketsPerSecEnumLiteralDeclaration_2()); 
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Speed__Alternatives"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2427:1: rule__NetworkInfrastructure__Group__0 : rule__NetworkInfrastructure__Group__0__Impl rule__NetworkInfrastructure__Group__1 ;
+    public final void rule__NetworkInfrastructure__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2431:1: ( rule__NetworkInfrastructure__Group__0__Impl rule__NetworkInfrastructure__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2432:2: rule__NetworkInfrastructure__Group__0__Impl rule__NetworkInfrastructure__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__0__Impl_in_rule__NetworkInfrastructure__Group__05211);
+            rule__NetworkInfrastructure__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__1_in_rule__NetworkInfrastructure__Group__05214);
+            rule__NetworkInfrastructure__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__0"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2439:1: rule__NetworkInfrastructure__Group__0__Impl : ( 'NetworkInfrastructure' ) ;
+    public final void rule__NetworkInfrastructure__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2443:1: ( ( 'NetworkInfrastructure' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2444:1: ( 'NetworkInfrastructure' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2444:1: ( 'NetworkInfrastructure' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2445:1: 'NetworkInfrastructure'
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getNetworkInfrastructureKeyword_0()); 
+            match(input,22,FollowSets000.FOLLOW_22_in_rule__NetworkInfrastructure__Group__0__Impl5242); 
+             after(grammarAccess.getNetworkInfrastructureAccess().getNetworkInfrastructureKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__0__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2458:1: rule__NetworkInfrastructure__Group__1 : rule__NetworkInfrastructure__Group__1__Impl rule__NetworkInfrastructure__Group__2 ;
+    public final void rule__NetworkInfrastructure__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2462:1: ( rule__NetworkInfrastructure__Group__1__Impl rule__NetworkInfrastructure__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2463:2: rule__NetworkInfrastructure__Group__1__Impl rule__NetworkInfrastructure__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__1__Impl_in_rule__NetworkInfrastructure__Group__15273);
+            rule__NetworkInfrastructure__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__2_in_rule__NetworkInfrastructure__Group__15276);
+            rule__NetworkInfrastructure__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__1"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2470:1: rule__NetworkInfrastructure__Group__1__Impl : ( '{' ) ;
+    public final void rule__NetworkInfrastructure__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2474:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2475:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2475:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2476:1: '{'
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__NetworkInfrastructure__Group__1__Impl5304); 
+             after(grammarAccess.getNetworkInfrastructureAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__1__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2489:1: rule__NetworkInfrastructure__Group__2 : rule__NetworkInfrastructure__Group__2__Impl rule__NetworkInfrastructure__Group__3 ;
+    public final void rule__NetworkInfrastructure__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2493:1: ( rule__NetworkInfrastructure__Group__2__Impl rule__NetworkInfrastructure__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2494:2: rule__NetworkInfrastructure__Group__2__Impl rule__NetworkInfrastructure__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__2__Impl_in_rule__NetworkInfrastructure__Group__25335);
+            rule__NetworkInfrastructure__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__3_in_rule__NetworkInfrastructure__Group__25338);
+            rule__NetworkInfrastructure__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__2"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2501:1: rule__NetworkInfrastructure__Group__2__Impl : ( 'dataCenterName' ) ;
+    public final void rule__NetworkInfrastructure__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2505:1: ( ( 'dataCenterName' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2506:1: ( 'dataCenterName' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2506:1: ( 'dataCenterName' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2507:1: 'dataCenterName'
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getDataCenterNameKeyword_2()); 
+            match(input,24,FollowSets000.FOLLOW_24_in_rule__NetworkInfrastructure__Group__2__Impl5366); 
+             after(grammarAccess.getNetworkInfrastructureAccess().getDataCenterNameKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__2__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2520:1: rule__NetworkInfrastructure__Group__3 : rule__NetworkInfrastructure__Group__3__Impl rule__NetworkInfrastructure__Group__4 ;
+    public final void rule__NetworkInfrastructure__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2524:1: ( rule__NetworkInfrastructure__Group__3__Impl rule__NetworkInfrastructure__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2525:2: rule__NetworkInfrastructure__Group__3__Impl rule__NetworkInfrastructure__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__3__Impl_in_rule__NetworkInfrastructure__Group__35397);
+            rule__NetworkInfrastructure__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__4_in_rule__NetworkInfrastructure__Group__35400);
+            rule__NetworkInfrastructure__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__3"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2532:1: rule__NetworkInfrastructure__Group__3__Impl : ( ( rule__NetworkInfrastructure__DataCenterNameAssignment_3 ) ) ;
+    public final void rule__NetworkInfrastructure__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2536:1: ( ( ( rule__NetworkInfrastructure__DataCenterNameAssignment_3 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2537:1: ( ( rule__NetworkInfrastructure__DataCenterNameAssignment_3 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2537:1: ( ( rule__NetworkInfrastructure__DataCenterNameAssignment_3 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2538:1: ( rule__NetworkInfrastructure__DataCenterNameAssignment_3 )
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getDataCenterNameAssignment_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2539:1: ( rule__NetworkInfrastructure__DataCenterNameAssignment_3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2539:2: rule__NetworkInfrastructure__DataCenterNameAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__DataCenterNameAssignment_3_in_rule__NetworkInfrastructure__Group__3__Impl5427);
+            rule__NetworkInfrastructure__DataCenterNameAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkInfrastructureAccess().getDataCenterNameAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__3__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2549:1: rule__NetworkInfrastructure__Group__4 : rule__NetworkInfrastructure__Group__4__Impl rule__NetworkInfrastructure__Group__5 ;
+    public final void rule__NetworkInfrastructure__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2553:1: ( rule__NetworkInfrastructure__Group__4__Impl rule__NetworkInfrastructure__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2554:2: rule__NetworkInfrastructure__Group__4__Impl rule__NetworkInfrastructure__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__4__Impl_in_rule__NetworkInfrastructure__Group__45457);
+            rule__NetworkInfrastructure__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__5_in_rule__NetworkInfrastructure__Group__45460);
+            rule__NetworkInfrastructure__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__4"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2561:1: rule__NetworkInfrastructure__Group__4__Impl : ( 'dataCenterAltName' ) ;
+    public final void rule__NetworkInfrastructure__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2565:1: ( ( 'dataCenterAltName' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2566:1: ( 'dataCenterAltName' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2566:1: ( 'dataCenterAltName' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2567:1: 'dataCenterAltName'
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getDataCenterAltNameKeyword_4()); 
+            match(input,25,FollowSets000.FOLLOW_25_in_rule__NetworkInfrastructure__Group__4__Impl5488); 
+             after(grammarAccess.getNetworkInfrastructureAccess().getDataCenterAltNameKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__4__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2580:1: rule__NetworkInfrastructure__Group__5 : rule__NetworkInfrastructure__Group__5__Impl rule__NetworkInfrastructure__Group__6 ;
+    public final void rule__NetworkInfrastructure__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2584:1: ( rule__NetworkInfrastructure__Group__5__Impl rule__NetworkInfrastructure__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2585:2: rule__NetworkInfrastructure__Group__5__Impl rule__NetworkInfrastructure__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__5__Impl_in_rule__NetworkInfrastructure__Group__55519);
+            rule__NetworkInfrastructure__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__6_in_rule__NetworkInfrastructure__Group__55522);
+            rule__NetworkInfrastructure__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__5"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2592:1: rule__NetworkInfrastructure__Group__5__Impl : ( ( rule__NetworkInfrastructure__DataCenterAltNameAssignment_5 ) ) ;
+    public final void rule__NetworkInfrastructure__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2596:1: ( ( ( rule__NetworkInfrastructure__DataCenterAltNameAssignment_5 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2597:1: ( ( rule__NetworkInfrastructure__DataCenterAltNameAssignment_5 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2597:1: ( ( rule__NetworkInfrastructure__DataCenterAltNameAssignment_5 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2598:1: ( rule__NetworkInfrastructure__DataCenterAltNameAssignment_5 )
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getDataCenterAltNameAssignment_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2599:1: ( rule__NetworkInfrastructure__DataCenterAltNameAssignment_5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2599:2: rule__NetworkInfrastructure__DataCenterAltNameAssignment_5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__DataCenterAltNameAssignment_5_in_rule__NetworkInfrastructure__Group__5__Impl5549);
+            rule__NetworkInfrastructure__DataCenterAltNameAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkInfrastructureAccess().getDataCenterAltNameAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__5__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2609:1: rule__NetworkInfrastructure__Group__6 : rule__NetworkInfrastructure__Group__6__Impl rule__NetworkInfrastructure__Group__7 ;
+    public final void rule__NetworkInfrastructure__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2613:1: ( rule__NetworkInfrastructure__Group__6__Impl rule__NetworkInfrastructure__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2614:2: rule__NetworkInfrastructure__Group__6__Impl rule__NetworkInfrastructure__Group__7
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__6__Impl_in_rule__NetworkInfrastructure__Group__65579);
+            rule__NetworkInfrastructure__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__7_in_rule__NetworkInfrastructure__Group__65582);
+            rule__NetworkInfrastructure__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__6"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2621:1: rule__NetworkInfrastructure__Group__6__Impl : ( 'traffic' ) ;
+    public final void rule__NetworkInfrastructure__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2625:1: ( ( 'traffic' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2626:1: ( 'traffic' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2626:1: ( 'traffic' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2627:1: 'traffic'
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getTrafficKeyword_6()); 
+            match(input,26,FollowSets000.FOLLOW_26_in_rule__NetworkInfrastructure__Group__6__Impl5610); 
+             after(grammarAccess.getNetworkInfrastructureAccess().getTrafficKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__6__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2640:1: rule__NetworkInfrastructure__Group__7 : rule__NetworkInfrastructure__Group__7__Impl rule__NetworkInfrastructure__Group__8 ;
+    public final void rule__NetworkInfrastructure__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2644:1: ( rule__NetworkInfrastructure__Group__7__Impl rule__NetworkInfrastructure__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2645:2: rule__NetworkInfrastructure__Group__7__Impl rule__NetworkInfrastructure__Group__8
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__7__Impl_in_rule__NetworkInfrastructure__Group__75641);
+            rule__NetworkInfrastructure__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__8_in_rule__NetworkInfrastructure__Group__75644);
+            rule__NetworkInfrastructure__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__7"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2652:1: rule__NetworkInfrastructure__Group__7__Impl : ( ( rule__NetworkInfrastructure__TrafficAssignment_7 ) ) ;
+    public final void rule__NetworkInfrastructure__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2656:1: ( ( ( rule__NetworkInfrastructure__TrafficAssignment_7 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2657:1: ( ( rule__NetworkInfrastructure__TrafficAssignment_7 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2657:1: ( ( rule__NetworkInfrastructure__TrafficAssignment_7 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2658:1: ( rule__NetworkInfrastructure__TrafficAssignment_7 )
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getTrafficAssignment_7()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2659:1: ( rule__NetworkInfrastructure__TrafficAssignment_7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2659:2: rule__NetworkInfrastructure__TrafficAssignment_7
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__TrafficAssignment_7_in_rule__NetworkInfrastructure__Group__7__Impl5671);
+            rule__NetworkInfrastructure__TrafficAssignment_7();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkInfrastructureAccess().getTrafficAssignment_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__7__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2669:1: rule__NetworkInfrastructure__Group__8 : rule__NetworkInfrastructure__Group__8__Impl rule__NetworkInfrastructure__Group__9 ;
+    public final void rule__NetworkInfrastructure__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2673:1: ( rule__NetworkInfrastructure__Group__8__Impl rule__NetworkInfrastructure__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2674:2: rule__NetworkInfrastructure__Group__8__Impl rule__NetworkInfrastructure__Group__9
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__8__Impl_in_rule__NetworkInfrastructure__Group__85701);
+            rule__NetworkInfrastructure__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__9_in_rule__NetworkInfrastructure__Group__85704);
+            rule__NetworkInfrastructure__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__8"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2681:1: rule__NetworkInfrastructure__Group__8__Impl : ( 'structure' ) ;
+    public final void rule__NetworkInfrastructure__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2685:1: ( ( 'structure' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2686:1: ( 'structure' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2686:1: ( 'structure' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2687:1: 'structure'
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getStructureKeyword_8()); 
+            match(input,27,FollowSets000.FOLLOW_27_in_rule__NetworkInfrastructure__Group__8__Impl5732); 
+             after(grammarAccess.getNetworkInfrastructureAccess().getStructureKeyword_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__8__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2700:1: rule__NetworkInfrastructure__Group__9 : rule__NetworkInfrastructure__Group__9__Impl rule__NetworkInfrastructure__Group__10 ;
+    public final void rule__NetworkInfrastructure__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2704:1: ( rule__NetworkInfrastructure__Group__9__Impl rule__NetworkInfrastructure__Group__10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2705:2: rule__NetworkInfrastructure__Group__9__Impl rule__NetworkInfrastructure__Group__10
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__9__Impl_in_rule__NetworkInfrastructure__Group__95763);
+            rule__NetworkInfrastructure__Group__9__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__10_in_rule__NetworkInfrastructure__Group__95766);
+            rule__NetworkInfrastructure__Group__10();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__9"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2712:1: rule__NetworkInfrastructure__Group__9__Impl : ( ( rule__NetworkInfrastructure__StructureAssignment_9 ) ) ;
+    public final void rule__NetworkInfrastructure__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2716:1: ( ( ( rule__NetworkInfrastructure__StructureAssignment_9 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2717:1: ( ( rule__NetworkInfrastructure__StructureAssignment_9 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2717:1: ( ( rule__NetworkInfrastructure__StructureAssignment_9 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2718:1: ( rule__NetworkInfrastructure__StructureAssignment_9 )
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getStructureAssignment_9()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2719:1: ( rule__NetworkInfrastructure__StructureAssignment_9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2719:2: rule__NetworkInfrastructure__StructureAssignment_9
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__StructureAssignment_9_in_rule__NetworkInfrastructure__Group__9__Impl5793);
+            rule__NetworkInfrastructure__StructureAssignment_9();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkInfrastructureAccess().getStructureAssignment_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__9__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2729:1: rule__NetworkInfrastructure__Group__10 : rule__NetworkInfrastructure__Group__10__Impl rule__NetworkInfrastructure__Group__11 ;
+    public final void rule__NetworkInfrastructure__Group__10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2733:1: ( rule__NetworkInfrastructure__Group__10__Impl rule__NetworkInfrastructure__Group__11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2734:2: rule__NetworkInfrastructure__Group__10__Impl rule__NetworkInfrastructure__Group__11
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__10__Impl_in_rule__NetworkInfrastructure__Group__105823);
+            rule__NetworkInfrastructure__Group__10__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__11_in_rule__NetworkInfrastructure__Group__105826);
+            rule__NetworkInfrastructure__Group__11();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__10"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__10__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2741:1: rule__NetworkInfrastructure__Group__10__Impl : ( 'configuration' ) ;
+    public final void rule__NetworkInfrastructure__Group__10__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2745:1: ( ( 'configuration' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2746:1: ( 'configuration' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2746:1: ( 'configuration' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2747:1: 'configuration'
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getConfigurationKeyword_10()); 
+            match(input,28,FollowSets000.FOLLOW_28_in_rule__NetworkInfrastructure__Group__10__Impl5854); 
+             after(grammarAccess.getNetworkInfrastructureAccess().getConfigurationKeyword_10()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__10__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2760:1: rule__NetworkInfrastructure__Group__11 : rule__NetworkInfrastructure__Group__11__Impl rule__NetworkInfrastructure__Group__12 ;
+    public final void rule__NetworkInfrastructure__Group__11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2764:1: ( rule__NetworkInfrastructure__Group__11__Impl rule__NetworkInfrastructure__Group__12 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2765:2: rule__NetworkInfrastructure__Group__11__Impl rule__NetworkInfrastructure__Group__12
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__11__Impl_in_rule__NetworkInfrastructure__Group__115885);
+            rule__NetworkInfrastructure__Group__11__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__12_in_rule__NetworkInfrastructure__Group__115888);
+            rule__NetworkInfrastructure__Group__12();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__11"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__11__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2772:1: rule__NetworkInfrastructure__Group__11__Impl : ( ( rule__NetworkInfrastructure__ConfigurationAssignment_11 ) ) ;
+    public final void rule__NetworkInfrastructure__Group__11__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2776:1: ( ( ( rule__NetworkInfrastructure__ConfigurationAssignment_11 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2777:1: ( ( rule__NetworkInfrastructure__ConfigurationAssignment_11 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2777:1: ( ( rule__NetworkInfrastructure__ConfigurationAssignment_11 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2778:1: ( rule__NetworkInfrastructure__ConfigurationAssignment_11 )
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getConfigurationAssignment_11()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2779:1: ( rule__NetworkInfrastructure__ConfigurationAssignment_11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2779:2: rule__NetworkInfrastructure__ConfigurationAssignment_11
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__ConfigurationAssignment_11_in_rule__NetworkInfrastructure__Group__11__Impl5915);
+            rule__NetworkInfrastructure__ConfigurationAssignment_11();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkInfrastructureAccess().getConfigurationAssignment_11()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__11__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__12"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2789:1: rule__NetworkInfrastructure__Group__12 : rule__NetworkInfrastructure__Group__12__Impl rule__NetworkInfrastructure__Group__13 ;
+    public final void rule__NetworkInfrastructure__Group__12() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2793:1: ( rule__NetworkInfrastructure__Group__12__Impl rule__NetworkInfrastructure__Group__13 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2794:2: rule__NetworkInfrastructure__Group__12__Impl rule__NetworkInfrastructure__Group__13
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__12__Impl_in_rule__NetworkInfrastructure__Group__125945);
+            rule__NetworkInfrastructure__Group__12__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__13_in_rule__NetworkInfrastructure__Group__125948);
+            rule__NetworkInfrastructure__Group__13();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__12"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__12__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2801:1: rule__NetworkInfrastructure__Group__12__Impl : ( ( rule__NetworkInfrastructure__Group_12__0 )? ) ;
+    public final void rule__NetworkInfrastructure__Group__12__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2805:1: ( ( ( rule__NetworkInfrastructure__Group_12__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2806:1: ( ( rule__NetworkInfrastructure__Group_12__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2806:1: ( ( rule__NetworkInfrastructure__Group_12__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2807:1: ( rule__NetworkInfrastructure__Group_12__0 )?
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getGroup_12()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2808:1: ( rule__NetworkInfrastructure__Group_12__0 )?
+            int alt17=2;
+            int LA17_0 = input.LA(1);
+
+            if ( (LA17_0==30) ) {
+                alt17=1;
+            }
+            switch (alt17) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2808:2: rule__NetworkInfrastructure__Group_12__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group_12__0_in_rule__NetworkInfrastructure__Group__12__Impl5975);
+                    rule__NetworkInfrastructure__Group_12__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getNetworkInfrastructureAccess().getGroup_12()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__12__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__13"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2818:1: rule__NetworkInfrastructure__Group__13 : rule__NetworkInfrastructure__Group__13__Impl ;
+    public final void rule__NetworkInfrastructure__Group__13() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2822:1: ( rule__NetworkInfrastructure__Group__13__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2823:2: rule__NetworkInfrastructure__Group__13__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group__13__Impl_in_rule__NetworkInfrastructure__Group__136006);
+            rule__NetworkInfrastructure__Group__13__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__13"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group__13__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2829:1: rule__NetworkInfrastructure__Group__13__Impl : ( '}' ) ;
+    public final void rule__NetworkInfrastructure__Group__13__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2833:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2834:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2834:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2835:1: '}'
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getRightCurlyBracketKeyword_13()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__NetworkInfrastructure__Group__13__Impl6034); 
+             after(grammarAccess.getNetworkInfrastructureAccess().getRightCurlyBracketKeyword_13()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group__13__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group_12__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2876:1: rule__NetworkInfrastructure__Group_12__0 : rule__NetworkInfrastructure__Group_12__0__Impl rule__NetworkInfrastructure__Group_12__1 ;
+    public final void rule__NetworkInfrastructure__Group_12__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2880:1: ( rule__NetworkInfrastructure__Group_12__0__Impl rule__NetworkInfrastructure__Group_12__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2881:2: rule__NetworkInfrastructure__Group_12__0__Impl rule__NetworkInfrastructure__Group_12__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group_12__0__Impl_in_rule__NetworkInfrastructure__Group_12__06093);
+            rule__NetworkInfrastructure__Group_12__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group_12__1_in_rule__NetworkInfrastructure__Group_12__06096);
+            rule__NetworkInfrastructure__Group_12__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group_12__0"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group_12__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2888:1: rule__NetworkInfrastructure__Group_12__0__Impl : ( 'params' ) ;
+    public final void rule__NetworkInfrastructure__Group_12__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2892:1: ( ( 'params' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2893:1: ( 'params' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2893:1: ( 'params' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2894:1: 'params'
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getParamsKeyword_12_0()); 
+            match(input,30,FollowSets000.FOLLOW_30_in_rule__NetworkInfrastructure__Group_12__0__Impl6124); 
+             after(grammarAccess.getNetworkInfrastructureAccess().getParamsKeyword_12_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group_12__0__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group_12__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2907:1: rule__NetworkInfrastructure__Group_12__1 : rule__NetworkInfrastructure__Group_12__1__Impl rule__NetworkInfrastructure__Group_12__2 ;
+    public final void rule__NetworkInfrastructure__Group_12__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2911:1: ( rule__NetworkInfrastructure__Group_12__1__Impl rule__NetworkInfrastructure__Group_12__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2912:2: rule__NetworkInfrastructure__Group_12__1__Impl rule__NetworkInfrastructure__Group_12__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group_12__1__Impl_in_rule__NetworkInfrastructure__Group_12__16155);
+            rule__NetworkInfrastructure__Group_12__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group_12__2_in_rule__NetworkInfrastructure__Group_12__16158);
+            rule__NetworkInfrastructure__Group_12__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group_12__1"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group_12__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2919:1: rule__NetworkInfrastructure__Group_12__1__Impl : ( '{' ) ;
+    public final void rule__NetworkInfrastructure__Group_12__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2923:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2924:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2924:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2925:1: '{'
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getLeftCurlyBracketKeyword_12_1()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__NetworkInfrastructure__Group_12__1__Impl6186); 
+             after(grammarAccess.getNetworkInfrastructureAccess().getLeftCurlyBracketKeyword_12_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group_12__1__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group_12__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2938:1: rule__NetworkInfrastructure__Group_12__2 : rule__NetworkInfrastructure__Group_12__2__Impl rule__NetworkInfrastructure__Group_12__3 ;
+    public final void rule__NetworkInfrastructure__Group_12__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2942:1: ( rule__NetworkInfrastructure__Group_12__2__Impl rule__NetworkInfrastructure__Group_12__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2943:2: rule__NetworkInfrastructure__Group_12__2__Impl rule__NetworkInfrastructure__Group_12__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group_12__2__Impl_in_rule__NetworkInfrastructure__Group_12__26217);
+            rule__NetworkInfrastructure__Group_12__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group_12__3_in_rule__NetworkInfrastructure__Group_12__26220);
+            rule__NetworkInfrastructure__Group_12__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group_12__2"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group_12__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2950:1: rule__NetworkInfrastructure__Group_12__2__Impl : ( ( rule__NetworkInfrastructure__ParamsAssignment_12_2 ) ) ;
+    public final void rule__NetworkInfrastructure__Group_12__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2954:1: ( ( ( rule__NetworkInfrastructure__ParamsAssignment_12_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2955:1: ( ( rule__NetworkInfrastructure__ParamsAssignment_12_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2955:1: ( ( rule__NetworkInfrastructure__ParamsAssignment_12_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2956:1: ( rule__NetworkInfrastructure__ParamsAssignment_12_2 )
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getParamsAssignment_12_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2957:1: ( rule__NetworkInfrastructure__ParamsAssignment_12_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2957:2: rule__NetworkInfrastructure__ParamsAssignment_12_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__ParamsAssignment_12_2_in_rule__NetworkInfrastructure__Group_12__2__Impl6247);
+            rule__NetworkInfrastructure__ParamsAssignment_12_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkInfrastructureAccess().getParamsAssignment_12_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group_12__2__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group_12__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2967:1: rule__NetworkInfrastructure__Group_12__3 : rule__NetworkInfrastructure__Group_12__3__Impl rule__NetworkInfrastructure__Group_12__4 ;
+    public final void rule__NetworkInfrastructure__Group_12__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2971:1: ( rule__NetworkInfrastructure__Group_12__3__Impl rule__NetworkInfrastructure__Group_12__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2972:2: rule__NetworkInfrastructure__Group_12__3__Impl rule__NetworkInfrastructure__Group_12__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group_12__3__Impl_in_rule__NetworkInfrastructure__Group_12__36277);
+            rule__NetworkInfrastructure__Group_12__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group_12__4_in_rule__NetworkInfrastructure__Group_12__36280);
+            rule__NetworkInfrastructure__Group_12__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group_12__3"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group_12__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2979:1: rule__NetworkInfrastructure__Group_12__3__Impl : ( ( rule__NetworkInfrastructure__Group_12_3__0 )* ) ;
+    public final void rule__NetworkInfrastructure__Group_12__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2983:1: ( ( ( rule__NetworkInfrastructure__Group_12_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2984:1: ( ( rule__NetworkInfrastructure__Group_12_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2984:1: ( ( rule__NetworkInfrastructure__Group_12_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2985:1: ( rule__NetworkInfrastructure__Group_12_3__0 )*
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getGroup_12_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2986:1: ( rule__NetworkInfrastructure__Group_12_3__0 )*
+            loop18:
+            do {
+                int alt18=2;
+                int LA18_0 = input.LA(1);
+
+                if ( (LA18_0==31) ) {
+                    alt18=1;
+                }
+
+
+                switch (alt18) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2986:2: rule__NetworkInfrastructure__Group_12_3__0
+            	    {
+            	    pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group_12_3__0_in_rule__NetworkInfrastructure__Group_12__3__Impl6307);
+            	    rule__NetworkInfrastructure__Group_12_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop18;
+                }
+            } while (true);
+
+             after(grammarAccess.getNetworkInfrastructureAccess().getGroup_12_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group_12__3__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group_12__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:2996:1: rule__NetworkInfrastructure__Group_12__4 : rule__NetworkInfrastructure__Group_12__4__Impl ;
+    public final void rule__NetworkInfrastructure__Group_12__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3000:1: ( rule__NetworkInfrastructure__Group_12__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3001:2: rule__NetworkInfrastructure__Group_12__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group_12__4__Impl_in_rule__NetworkInfrastructure__Group_12__46338);
+            rule__NetworkInfrastructure__Group_12__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group_12__4"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group_12__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3007:1: rule__NetworkInfrastructure__Group_12__4__Impl : ( '}' ) ;
+    public final void rule__NetworkInfrastructure__Group_12__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3011:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3012:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3012:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3013:1: '}'
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getRightCurlyBracketKeyword_12_4()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__NetworkInfrastructure__Group_12__4__Impl6366); 
+             after(grammarAccess.getNetworkInfrastructureAccess().getRightCurlyBracketKeyword_12_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group_12__4__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group_12_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3036:1: rule__NetworkInfrastructure__Group_12_3__0 : rule__NetworkInfrastructure__Group_12_3__0__Impl rule__NetworkInfrastructure__Group_12_3__1 ;
+    public final void rule__NetworkInfrastructure__Group_12_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3040:1: ( rule__NetworkInfrastructure__Group_12_3__0__Impl rule__NetworkInfrastructure__Group_12_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3041:2: rule__NetworkInfrastructure__Group_12_3__0__Impl rule__NetworkInfrastructure__Group_12_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group_12_3__0__Impl_in_rule__NetworkInfrastructure__Group_12_3__06407);
+            rule__NetworkInfrastructure__Group_12_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group_12_3__1_in_rule__NetworkInfrastructure__Group_12_3__06410);
+            rule__NetworkInfrastructure__Group_12_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group_12_3__0"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group_12_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3048:1: rule__NetworkInfrastructure__Group_12_3__0__Impl : ( ',' ) ;
+    public final void rule__NetworkInfrastructure__Group_12_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3052:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3053:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3053:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3054:1: ','
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getCommaKeyword_12_3_0()); 
+            match(input,31,FollowSets000.FOLLOW_31_in_rule__NetworkInfrastructure__Group_12_3__0__Impl6438); 
+             after(grammarAccess.getNetworkInfrastructureAccess().getCommaKeyword_12_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group_12_3__0__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group_12_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3067:1: rule__NetworkInfrastructure__Group_12_3__1 : rule__NetworkInfrastructure__Group_12_3__1__Impl ;
+    public final void rule__NetworkInfrastructure__Group_12_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3071:1: ( rule__NetworkInfrastructure__Group_12_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3072:2: rule__NetworkInfrastructure__Group_12_3__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__Group_12_3__1__Impl_in_rule__NetworkInfrastructure__Group_12_3__16469);
+            rule__NetworkInfrastructure__Group_12_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group_12_3__1"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__Group_12_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3078:1: rule__NetworkInfrastructure__Group_12_3__1__Impl : ( ( rule__NetworkInfrastructure__ParamsAssignment_12_3_1 ) ) ;
+    public final void rule__NetworkInfrastructure__Group_12_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3082:1: ( ( ( rule__NetworkInfrastructure__ParamsAssignment_12_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3083:1: ( ( rule__NetworkInfrastructure__ParamsAssignment_12_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3083:1: ( ( rule__NetworkInfrastructure__ParamsAssignment_12_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3084:1: ( rule__NetworkInfrastructure__ParamsAssignment_12_3_1 )
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getParamsAssignment_12_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3085:1: ( rule__NetworkInfrastructure__ParamsAssignment_12_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3085:2: rule__NetworkInfrastructure__ParamsAssignment_12_3_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkInfrastructure__ParamsAssignment_12_3_1_in_rule__NetworkInfrastructure__Group_12_3__1__Impl6496);
+            rule__NetworkInfrastructure__ParamsAssignment_12_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkInfrastructureAccess().getParamsAssignment_12_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__Group_12_3__1__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3099:1: rule__VirtualNetworkInterfacePerfSpec__Group__0 : rule__VirtualNetworkInterfacePerfSpec__Group__0__Impl rule__VirtualNetworkInterfacePerfSpec__Group__1 ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3103:1: ( rule__VirtualNetworkInterfacePerfSpec__Group__0__Impl rule__VirtualNetworkInterfacePerfSpec__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3104:2: rule__VirtualNetworkInterfacePerfSpec__Group__0__Impl rule__VirtualNetworkInterfacePerfSpec__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__0__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__06530);
+            rule__VirtualNetworkInterfacePerfSpec__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__1_in_rule__VirtualNetworkInterfacePerfSpec__Group__06533);
+            rule__VirtualNetworkInterfacePerfSpec__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__0"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3111:1: rule__VirtualNetworkInterfacePerfSpec__Group__0__Impl : ( () ) ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3115:1: ( ( () ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3116:1: ( () )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3116:1: ( () )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3117:1: ()
+            {
+             before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getVirtualNetworkInterfacePerfSpecAction_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3118:1: ()
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3120:1: 
+            {
+            }
+
+             after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getVirtualNetworkInterfacePerfSpecAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__0__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3130:1: rule__VirtualNetworkInterfacePerfSpec__Group__1 : rule__VirtualNetworkInterfacePerfSpec__Group__1__Impl rule__VirtualNetworkInterfacePerfSpec__Group__2 ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3134:1: ( rule__VirtualNetworkInterfacePerfSpec__Group__1__Impl rule__VirtualNetworkInterfacePerfSpec__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3135:2: rule__VirtualNetworkInterfacePerfSpec__Group__1__Impl rule__VirtualNetworkInterfacePerfSpec__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__1__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__16591);
+            rule__VirtualNetworkInterfacePerfSpec__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__2_in_rule__VirtualNetworkInterfacePerfSpec__Group__16594);
+            rule__VirtualNetworkInterfacePerfSpec__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__1"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3142:1: rule__VirtualNetworkInterfacePerfSpec__Group__1__Impl : ( 'VirtualNetworkInterfacePerfSpec' ) ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3146:1: ( ( 'VirtualNetworkInterfacePerfSpec' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3147:1: ( 'VirtualNetworkInterfacePerfSpec' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3147:1: ( 'VirtualNetworkInterfacePerfSpec' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3148:1: 'VirtualNetworkInterfacePerfSpec'
+            {
+             before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getVirtualNetworkInterfacePerfSpecKeyword_1()); 
+            match(input,32,FollowSets000.FOLLOW_32_in_rule__VirtualNetworkInterfacePerfSpec__Group__1__Impl6622); 
+             after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getVirtualNetworkInterfacePerfSpecKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__1__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3161:1: rule__VirtualNetworkInterfacePerfSpec__Group__2 : rule__VirtualNetworkInterfacePerfSpec__Group__2__Impl rule__VirtualNetworkInterfacePerfSpec__Group__3 ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3165:1: ( rule__VirtualNetworkInterfacePerfSpec__Group__2__Impl rule__VirtualNetworkInterfacePerfSpec__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3166:2: rule__VirtualNetworkInterfacePerfSpec__Group__2__Impl rule__VirtualNetworkInterfacePerfSpec__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__2__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__26653);
+            rule__VirtualNetworkInterfacePerfSpec__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__3_in_rule__VirtualNetworkInterfacePerfSpec__Group__26656);
+            rule__VirtualNetworkInterfacePerfSpec__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__2"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3173:1: rule__VirtualNetworkInterfacePerfSpec__Group__2__Impl : ( '{' ) ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3177:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3178:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3178:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3179:1: '{'
+            {
+             before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__VirtualNetworkInterfacePerfSpec__Group__2__Impl6684); 
+             after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__2__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3192:1: rule__VirtualNetworkInterfacePerfSpec__Group__3 : rule__VirtualNetworkInterfacePerfSpec__Group__3__Impl rule__VirtualNetworkInterfacePerfSpec__Group__4 ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3196:1: ( rule__VirtualNetworkInterfacePerfSpec__Group__3__Impl rule__VirtualNetworkInterfacePerfSpec__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3197:2: rule__VirtualNetworkInterfacePerfSpec__Group__3__Impl rule__VirtualNetworkInterfacePerfSpec__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__3__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__36715);
+            rule__VirtualNetworkInterfacePerfSpec__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__4_in_rule__VirtualNetworkInterfacePerfSpec__Group__36718);
+            rule__VirtualNetworkInterfacePerfSpec__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__3"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3204:1: rule__VirtualNetworkInterfacePerfSpec__Group__3__Impl : ( 'isUp' ) ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3208:1: ( ( 'isUp' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3209:1: ( 'isUp' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3209:1: ( 'isUp' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3210:1: 'isUp'
+            {
+             before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getIsUpKeyword_3()); 
+            match(input,33,FollowSets000.FOLLOW_33_in_rule__VirtualNetworkInterfacePerfSpec__Group__3__Impl6746); 
+             after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getIsUpKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__3__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3223:1: rule__VirtualNetworkInterfacePerfSpec__Group__4 : rule__VirtualNetworkInterfacePerfSpec__Group__4__Impl rule__VirtualNetworkInterfacePerfSpec__Group__5 ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3227:1: ( rule__VirtualNetworkInterfacePerfSpec__Group__4__Impl rule__VirtualNetworkInterfacePerfSpec__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3228:2: rule__VirtualNetworkInterfacePerfSpec__Group__4__Impl rule__VirtualNetworkInterfacePerfSpec__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__4__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__46777);
+            rule__VirtualNetworkInterfacePerfSpec__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__5_in_rule__VirtualNetworkInterfacePerfSpec__Group__46780);
+            rule__VirtualNetworkInterfacePerfSpec__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__4"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3235:1: rule__VirtualNetworkInterfacePerfSpec__Group__4__Impl : ( ( rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_4 ) ) ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3239:1: ( ( ( rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_4 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3240:1: ( ( rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_4 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3240:1: ( ( rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_4 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3241:1: ( rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_4 )
+            {
+             before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getIsUpAssignment_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3242:1: ( rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3242:2: rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_4_in_rule__VirtualNetworkInterfacePerfSpec__Group__4__Impl6807);
+            rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getIsUpAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__4__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3252:1: rule__VirtualNetworkInterfacePerfSpec__Group__5 : rule__VirtualNetworkInterfacePerfSpec__Group__5__Impl rule__VirtualNetworkInterfacePerfSpec__Group__6 ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3256:1: ( rule__VirtualNetworkInterfacePerfSpec__Group__5__Impl rule__VirtualNetworkInterfacePerfSpec__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3257:2: rule__VirtualNetworkInterfacePerfSpec__Group__5__Impl rule__VirtualNetworkInterfacePerfSpec__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__5__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__56837);
+            rule__VirtualNetworkInterfacePerfSpec__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__6_in_rule__VirtualNetworkInterfacePerfSpec__Group__56840);
+            rule__VirtualNetworkInterfacePerfSpec__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__5"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3264:1: rule__VirtualNetworkInterfacePerfSpec__Group__5__Impl : ( 'packetProcessingTime' ) ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3268:1: ( ( 'packetProcessingTime' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3269:1: ( 'packetProcessingTime' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3269:1: ( 'packetProcessingTime' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3270:1: 'packetProcessingTime'
+            {
+             before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getPacketProcessingTimeKeyword_5()); 
+            match(input,34,FollowSets000.FOLLOW_34_in_rule__VirtualNetworkInterfacePerfSpec__Group__5__Impl6868); 
+             after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getPacketProcessingTimeKeyword_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__5__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3283:1: rule__VirtualNetworkInterfacePerfSpec__Group__6 : rule__VirtualNetworkInterfacePerfSpec__Group__6__Impl rule__VirtualNetworkInterfacePerfSpec__Group__7 ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3287:1: ( rule__VirtualNetworkInterfacePerfSpec__Group__6__Impl rule__VirtualNetworkInterfacePerfSpec__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3288:2: rule__VirtualNetworkInterfacePerfSpec__Group__6__Impl rule__VirtualNetworkInterfacePerfSpec__Group__7
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__6__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__66899);
+            rule__VirtualNetworkInterfacePerfSpec__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__7_in_rule__VirtualNetworkInterfacePerfSpec__Group__66902);
+            rule__VirtualNetworkInterfacePerfSpec__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__6"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3295:1: rule__VirtualNetworkInterfacePerfSpec__Group__6__Impl : ( ( rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6 ) ) ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3299:1: ( ( ( rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3300:1: ( ( rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3300:1: ( ( rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3301:1: ( rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6 )
+            {
+             before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getPacketProcessingTimeAssignment_6()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3302:1: ( rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3302:2: rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6_in_rule__VirtualNetworkInterfacePerfSpec__Group__6__Impl6929);
+            rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getPacketProcessingTimeAssignment_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__6__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3312:1: rule__VirtualNetworkInterfacePerfSpec__Group__7 : rule__VirtualNetworkInterfacePerfSpec__Group__7__Impl rule__VirtualNetworkInterfacePerfSpec__Group__8 ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3316:1: ( rule__VirtualNetworkInterfacePerfSpec__Group__7__Impl rule__VirtualNetworkInterfacePerfSpec__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3317:2: rule__VirtualNetworkInterfacePerfSpec__Group__7__Impl rule__VirtualNetworkInterfacePerfSpec__Group__8
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__7__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__76959);
+            rule__VirtualNetworkInterfacePerfSpec__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__8_in_rule__VirtualNetworkInterfacePerfSpec__Group__76962);
+            rule__VirtualNetworkInterfacePerfSpec__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__7"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3324:1: rule__VirtualNetworkInterfacePerfSpec__Group__7__Impl : ( 'MTU' ) ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3328:1: ( ( 'MTU' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3329:1: ( 'MTU' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3329:1: ( 'MTU' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3330:1: 'MTU'
+            {
+             before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getMTUKeyword_7()); 
+            match(input,35,FollowSets000.FOLLOW_35_in_rule__VirtualNetworkInterfacePerfSpec__Group__7__Impl6990); 
+             after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getMTUKeyword_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__7__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3343:1: rule__VirtualNetworkInterfacePerfSpec__Group__8 : rule__VirtualNetworkInterfacePerfSpec__Group__8__Impl rule__VirtualNetworkInterfacePerfSpec__Group__9 ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3347:1: ( rule__VirtualNetworkInterfacePerfSpec__Group__8__Impl rule__VirtualNetworkInterfacePerfSpec__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3348:2: rule__VirtualNetworkInterfacePerfSpec__Group__8__Impl rule__VirtualNetworkInterfacePerfSpec__Group__9
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__8__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__87021);
+            rule__VirtualNetworkInterfacePerfSpec__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__9_in_rule__VirtualNetworkInterfacePerfSpec__Group__87024);
+            rule__VirtualNetworkInterfacePerfSpec__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__8"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3355:1: rule__VirtualNetworkInterfacePerfSpec__Group__8__Impl : ( ( rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_8 ) ) ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3359:1: ( ( ( rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_8 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3360:1: ( ( rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_8 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3360:1: ( ( rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_8 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3361:1: ( rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_8 )
+            {
+             before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getMTUAssignment_8()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3362:1: ( rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3362:2: rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_8
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_8_in_rule__VirtualNetworkInterfacePerfSpec__Group__8__Impl7051);
+            rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_8();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getMTUAssignment_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__8__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3372:1: rule__VirtualNetworkInterfacePerfSpec__Group__9 : rule__VirtualNetworkInterfacePerfSpec__Group__9__Impl rule__VirtualNetworkInterfacePerfSpec__Group__10 ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3376:1: ( rule__VirtualNetworkInterfacePerfSpec__Group__9__Impl rule__VirtualNetworkInterfacePerfSpec__Group__10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3377:2: rule__VirtualNetworkInterfacePerfSpec__Group__9__Impl rule__VirtualNetworkInterfacePerfSpec__Group__10
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__9__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__97081);
+            rule__VirtualNetworkInterfacePerfSpec__Group__9__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__10_in_rule__VirtualNetworkInterfacePerfSpec__Group__97084);
+            rule__VirtualNetworkInterfacePerfSpec__Group__10();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__9"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3384:1: rule__VirtualNetworkInterfacePerfSpec__Group__9__Impl : ( 'interfaceSpeed' ) ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3388:1: ( ( 'interfaceSpeed' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3389:1: ( 'interfaceSpeed' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3389:1: ( 'interfaceSpeed' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3390:1: 'interfaceSpeed'
+            {
+             before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getInterfaceSpeedKeyword_9()); 
+            match(input,36,FollowSets000.FOLLOW_36_in_rule__VirtualNetworkInterfacePerfSpec__Group__9__Impl7112); 
+             after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getInterfaceSpeedKeyword_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__9__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3403:1: rule__VirtualNetworkInterfacePerfSpec__Group__10 : rule__VirtualNetworkInterfacePerfSpec__Group__10__Impl rule__VirtualNetworkInterfacePerfSpec__Group__11 ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3407:1: ( rule__VirtualNetworkInterfacePerfSpec__Group__10__Impl rule__VirtualNetworkInterfacePerfSpec__Group__11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3408:2: rule__VirtualNetworkInterfacePerfSpec__Group__10__Impl rule__VirtualNetworkInterfacePerfSpec__Group__11
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__10__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__107143);
+            rule__VirtualNetworkInterfacePerfSpec__Group__10__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__11_in_rule__VirtualNetworkInterfacePerfSpec__Group__107146);
+            rule__VirtualNetworkInterfacePerfSpec__Group__11();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__10"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__10__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3415:1: rule__VirtualNetworkInterfacePerfSpec__Group__10__Impl : ( ( rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10 ) ) ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__10__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3419:1: ( ( ( rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3420:1: ( ( rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3420:1: ( ( rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3421:1: ( rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10 )
+            {
+             before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getInterfaceSpeedAssignment_10()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3422:1: ( rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3422:2: rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10_in_rule__VirtualNetworkInterfacePerfSpec__Group__10__Impl7173);
+            rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getInterfaceSpeedAssignment_10()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__10__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3432:1: rule__VirtualNetworkInterfacePerfSpec__Group__11 : rule__VirtualNetworkInterfacePerfSpec__Group__11__Impl ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3436:1: ( rule__VirtualNetworkInterfacePerfSpec__Group__11__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3437:2: rule__VirtualNetworkInterfacePerfSpec__Group__11__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__11__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__117203);
+            rule__VirtualNetworkInterfacePerfSpec__Group__11__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__11"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__Group__11__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3443:1: rule__VirtualNetworkInterfacePerfSpec__Group__11__Impl : ( '}' ) ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__Group__11__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3447:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3448:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3448:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3449:1: '}'
+            {
+             before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getRightCurlyBracketKeyword_11()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__VirtualNetworkInterfacePerfSpec__Group__11__Impl7231); 
+             after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getRightCurlyBracketKeyword_11()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__Group__11__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3486:1: rule__PhysicalNetworkInterfacePerfSpec__Group__0 : rule__PhysicalNetworkInterfacePerfSpec__Group__0__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__1 ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3490:1: ( rule__PhysicalNetworkInterfacePerfSpec__Group__0__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3491:2: rule__PhysicalNetworkInterfacePerfSpec__Group__0__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__0__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__07286);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__1_in_rule__PhysicalNetworkInterfacePerfSpec__Group__07289);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__0"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3498:1: rule__PhysicalNetworkInterfacePerfSpec__Group__0__Impl : ( () ) ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3502:1: ( ( () ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3503:1: ( () )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3503:1: ( () )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3504:1: ()
+            {
+             before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPhysicalNetworkInterfacePerfSpecAction_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3505:1: ()
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3507:1: 
+            {
+            }
+
+             after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPhysicalNetworkInterfacePerfSpecAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3517:1: rule__PhysicalNetworkInterfacePerfSpec__Group__1 : rule__PhysicalNetworkInterfacePerfSpec__Group__1__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__2 ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3521:1: ( rule__PhysicalNetworkInterfacePerfSpec__Group__1__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3522:2: rule__PhysicalNetworkInterfacePerfSpec__Group__1__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__1__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__17347);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__2_in_rule__PhysicalNetworkInterfacePerfSpec__Group__17350);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__1"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3529:1: rule__PhysicalNetworkInterfacePerfSpec__Group__1__Impl : ( 'PhysicalNetworkInterfacePerfSpec' ) ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3533:1: ( ( 'PhysicalNetworkInterfacePerfSpec' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3534:1: ( 'PhysicalNetworkInterfacePerfSpec' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3534:1: ( 'PhysicalNetworkInterfacePerfSpec' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3535:1: 'PhysicalNetworkInterfacePerfSpec'
+            {
+             before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPhysicalNetworkInterfacePerfSpecKeyword_1()); 
+            match(input,37,FollowSets000.FOLLOW_37_in_rule__PhysicalNetworkInterfacePerfSpec__Group__1__Impl7378); 
+             after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPhysicalNetworkInterfacePerfSpecKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3548:1: rule__PhysicalNetworkInterfacePerfSpec__Group__2 : rule__PhysicalNetworkInterfacePerfSpec__Group__2__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__3 ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3552:1: ( rule__PhysicalNetworkInterfacePerfSpec__Group__2__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3553:2: rule__PhysicalNetworkInterfacePerfSpec__Group__2__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__2__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__27409);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__3_in_rule__PhysicalNetworkInterfacePerfSpec__Group__27412);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__2"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3560:1: rule__PhysicalNetworkInterfacePerfSpec__Group__2__Impl : ( '{' ) ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3564:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3565:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3565:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3566:1: '{'
+            {
+             before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__PhysicalNetworkInterfacePerfSpec__Group__2__Impl7440); 
+             after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3579:1: rule__PhysicalNetworkInterfacePerfSpec__Group__3 : rule__PhysicalNetworkInterfacePerfSpec__Group__3__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__4 ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3583:1: ( rule__PhysicalNetworkInterfacePerfSpec__Group__3__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3584:2: rule__PhysicalNetworkInterfacePerfSpec__Group__3__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__3__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__37471);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__4_in_rule__PhysicalNetworkInterfacePerfSpec__Group__37474);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__3"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3591:1: rule__PhysicalNetworkInterfacePerfSpec__Group__3__Impl : ( 'isUp' ) ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3595:1: ( ( 'isUp' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3596:1: ( 'isUp' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3596:1: ( 'isUp' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3597:1: 'isUp'
+            {
+             before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getIsUpKeyword_3()); 
+            match(input,33,FollowSets000.FOLLOW_33_in_rule__PhysicalNetworkInterfacePerfSpec__Group__3__Impl7502); 
+             after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getIsUpKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__3__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3610:1: rule__PhysicalNetworkInterfacePerfSpec__Group__4 : rule__PhysicalNetworkInterfacePerfSpec__Group__4__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__5 ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3614:1: ( rule__PhysicalNetworkInterfacePerfSpec__Group__4__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3615:2: rule__PhysicalNetworkInterfacePerfSpec__Group__4__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__4__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__47533);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__5_in_rule__PhysicalNetworkInterfacePerfSpec__Group__47536);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__4"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3622:1: rule__PhysicalNetworkInterfacePerfSpec__Group__4__Impl : ( ( rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_4 ) ) ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3626:1: ( ( ( rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_4 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3627:1: ( ( rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_4 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3627:1: ( ( rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_4 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3628:1: ( rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_4 )
+            {
+             before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getIsUpAssignment_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3629:1: ( rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3629:2: rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_4_in_rule__PhysicalNetworkInterfacePerfSpec__Group__4__Impl7563);
+            rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getIsUpAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__4__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3639:1: rule__PhysicalNetworkInterfacePerfSpec__Group__5 : rule__PhysicalNetworkInterfacePerfSpec__Group__5__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__6 ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3643:1: ( rule__PhysicalNetworkInterfacePerfSpec__Group__5__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3644:2: rule__PhysicalNetworkInterfacePerfSpec__Group__5__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__5__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__57593);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__6_in_rule__PhysicalNetworkInterfacePerfSpec__Group__57596);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__5"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3651:1: rule__PhysicalNetworkInterfacePerfSpec__Group__5__Impl : ( 'packetProcessingTime' ) ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3655:1: ( ( 'packetProcessingTime' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3656:1: ( 'packetProcessingTime' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3656:1: ( 'packetProcessingTime' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3657:1: 'packetProcessingTime'
+            {
+             before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPacketProcessingTimeKeyword_5()); 
+            match(input,34,FollowSets000.FOLLOW_34_in_rule__PhysicalNetworkInterfacePerfSpec__Group__5__Impl7624); 
+             after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPacketProcessingTimeKeyword_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__5__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3670:1: rule__PhysicalNetworkInterfacePerfSpec__Group__6 : rule__PhysicalNetworkInterfacePerfSpec__Group__6__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__7 ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3674:1: ( rule__PhysicalNetworkInterfacePerfSpec__Group__6__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3675:2: rule__PhysicalNetworkInterfacePerfSpec__Group__6__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__7
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__6__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__67655);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__7_in_rule__PhysicalNetworkInterfacePerfSpec__Group__67658);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__6"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3682:1: rule__PhysicalNetworkInterfacePerfSpec__Group__6__Impl : ( ( rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6 ) ) ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3686:1: ( ( ( rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3687:1: ( ( rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3687:1: ( ( rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3688:1: ( rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6 )
+            {
+             before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPacketProcessingTimeAssignment_6()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3689:1: ( rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3689:2: rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6_in_rule__PhysicalNetworkInterfacePerfSpec__Group__6__Impl7685);
+            rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPacketProcessingTimeAssignment_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__6__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3699:1: rule__PhysicalNetworkInterfacePerfSpec__Group__7 : rule__PhysicalNetworkInterfacePerfSpec__Group__7__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__8 ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3703:1: ( rule__PhysicalNetworkInterfacePerfSpec__Group__7__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3704:2: rule__PhysicalNetworkInterfacePerfSpec__Group__7__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__8
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__7__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__77715);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__8_in_rule__PhysicalNetworkInterfacePerfSpec__Group__77718);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__7"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3711:1: rule__PhysicalNetworkInterfacePerfSpec__Group__7__Impl : ( 'MTU' ) ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3715:1: ( ( 'MTU' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3716:1: ( 'MTU' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3716:1: ( 'MTU' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3717:1: 'MTU'
+            {
+             before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getMTUKeyword_7()); 
+            match(input,35,FollowSets000.FOLLOW_35_in_rule__PhysicalNetworkInterfacePerfSpec__Group__7__Impl7746); 
+             after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getMTUKeyword_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__7__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3730:1: rule__PhysicalNetworkInterfacePerfSpec__Group__8 : rule__PhysicalNetworkInterfacePerfSpec__Group__8__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__9 ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3734:1: ( rule__PhysicalNetworkInterfacePerfSpec__Group__8__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3735:2: rule__PhysicalNetworkInterfacePerfSpec__Group__8__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__9
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__8__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__87777);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__9_in_rule__PhysicalNetworkInterfacePerfSpec__Group__87780);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__8"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3742:1: rule__PhysicalNetworkInterfacePerfSpec__Group__8__Impl : ( ( rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_8 ) ) ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3746:1: ( ( ( rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_8 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3747:1: ( ( rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_8 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3747:1: ( ( rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_8 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3748:1: ( rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_8 )
+            {
+             before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getMTUAssignment_8()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3749:1: ( rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3749:2: rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_8
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_8_in_rule__PhysicalNetworkInterfacePerfSpec__Group__8__Impl7807);
+            rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_8();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getMTUAssignment_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__8__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3759:1: rule__PhysicalNetworkInterfacePerfSpec__Group__9 : rule__PhysicalNetworkInterfacePerfSpec__Group__9__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__10 ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3763:1: ( rule__PhysicalNetworkInterfacePerfSpec__Group__9__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3764:2: rule__PhysicalNetworkInterfacePerfSpec__Group__9__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__10
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__9__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__97837);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__9__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__10_in_rule__PhysicalNetworkInterfacePerfSpec__Group__97840);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__10();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__9"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3771:1: rule__PhysicalNetworkInterfacePerfSpec__Group__9__Impl : ( 'interfaceSpeed' ) ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3775:1: ( ( 'interfaceSpeed' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3776:1: ( 'interfaceSpeed' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3776:1: ( 'interfaceSpeed' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3777:1: 'interfaceSpeed'
+            {
+             before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getInterfaceSpeedKeyword_9()); 
+            match(input,36,FollowSets000.FOLLOW_36_in_rule__PhysicalNetworkInterfacePerfSpec__Group__9__Impl7868); 
+             after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getInterfaceSpeedKeyword_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__9__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3790:1: rule__PhysicalNetworkInterfacePerfSpec__Group__10 : rule__PhysicalNetworkInterfacePerfSpec__Group__10__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__11 ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3794:1: ( rule__PhysicalNetworkInterfacePerfSpec__Group__10__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3795:2: rule__PhysicalNetworkInterfacePerfSpec__Group__10__Impl rule__PhysicalNetworkInterfacePerfSpec__Group__11
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__10__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__107899);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__10__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__11_in_rule__PhysicalNetworkInterfacePerfSpec__Group__107902);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__11();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__10"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__10__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3802:1: rule__PhysicalNetworkInterfacePerfSpec__Group__10__Impl : ( ( rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10 ) ) ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__10__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3806:1: ( ( ( rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3807:1: ( ( rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3807:1: ( ( rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3808:1: ( rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10 )
+            {
+             before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getInterfaceSpeedAssignment_10()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3809:1: ( rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3809:2: rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10_in_rule__PhysicalNetworkInterfacePerfSpec__Group__10__Impl7929);
+            rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getInterfaceSpeedAssignment_10()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__10__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3819:1: rule__PhysicalNetworkInterfacePerfSpec__Group__11 : rule__PhysicalNetworkInterfacePerfSpec__Group__11__Impl ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3823:1: ( rule__PhysicalNetworkInterfacePerfSpec__Group__11__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3824:2: rule__PhysicalNetworkInterfacePerfSpec__Group__11__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__11__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__117959);
+            rule__PhysicalNetworkInterfacePerfSpec__Group__11__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__11"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__Group__11__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3830:1: rule__PhysicalNetworkInterfacePerfSpec__Group__11__Impl : ( '}' ) ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__Group__11__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3834:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3835:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3835:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3836:1: '}'
+            {
+             before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getRightCurlyBracketKeyword_11()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__PhysicalNetworkInterfacePerfSpec__Group__11__Impl7987); 
+             after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getRightCurlyBracketKeyword_11()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__Group__11__Impl"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3873:1: rule__VirtualLinkPerfSpec__Group__0 : rule__VirtualLinkPerfSpec__Group__0__Impl rule__VirtualLinkPerfSpec__Group__1 ;
+    public final void rule__VirtualLinkPerfSpec__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3877:1: ( rule__VirtualLinkPerfSpec__Group__0__Impl rule__VirtualLinkPerfSpec__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3878:2: rule__VirtualLinkPerfSpec__Group__0__Impl rule__VirtualLinkPerfSpec__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__Group__0__Impl_in_rule__VirtualLinkPerfSpec__Group__08042);
+            rule__VirtualLinkPerfSpec__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__Group__1_in_rule__VirtualLinkPerfSpec__Group__08045);
+            rule__VirtualLinkPerfSpec__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__Group__0"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3885:1: rule__VirtualLinkPerfSpec__Group__0__Impl : ( () ) ;
+    public final void rule__VirtualLinkPerfSpec__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3889:1: ( ( () ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3890:1: ( () )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3890:1: ( () )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3891:1: ()
+            {
+             before(grammarAccess.getVirtualLinkPerfSpecAccess().getVirtualLinkPerfSpecAction_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3892:1: ()
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3894:1: 
+            {
+            }
+
+             after(grammarAccess.getVirtualLinkPerfSpecAccess().getVirtualLinkPerfSpecAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__Group__0__Impl"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3904:1: rule__VirtualLinkPerfSpec__Group__1 : rule__VirtualLinkPerfSpec__Group__1__Impl rule__VirtualLinkPerfSpec__Group__2 ;
+    public final void rule__VirtualLinkPerfSpec__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3908:1: ( rule__VirtualLinkPerfSpec__Group__1__Impl rule__VirtualLinkPerfSpec__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3909:2: rule__VirtualLinkPerfSpec__Group__1__Impl rule__VirtualLinkPerfSpec__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__Group__1__Impl_in_rule__VirtualLinkPerfSpec__Group__18103);
+            rule__VirtualLinkPerfSpec__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__Group__2_in_rule__VirtualLinkPerfSpec__Group__18106);
+            rule__VirtualLinkPerfSpec__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__Group__1"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3916:1: rule__VirtualLinkPerfSpec__Group__1__Impl : ( 'VirtualLinkPerfSpec' ) ;
+    public final void rule__VirtualLinkPerfSpec__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3920:1: ( ( 'VirtualLinkPerfSpec' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3921:1: ( 'VirtualLinkPerfSpec' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3921:1: ( 'VirtualLinkPerfSpec' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3922:1: 'VirtualLinkPerfSpec'
+            {
+             before(grammarAccess.getVirtualLinkPerfSpecAccess().getVirtualLinkPerfSpecKeyword_1()); 
+            match(input,38,FollowSets000.FOLLOW_38_in_rule__VirtualLinkPerfSpec__Group__1__Impl8134); 
+             after(grammarAccess.getVirtualLinkPerfSpecAccess().getVirtualLinkPerfSpecKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__Group__1__Impl"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3935:1: rule__VirtualLinkPerfSpec__Group__2 : rule__VirtualLinkPerfSpec__Group__2__Impl rule__VirtualLinkPerfSpec__Group__3 ;
+    public final void rule__VirtualLinkPerfSpec__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3939:1: ( rule__VirtualLinkPerfSpec__Group__2__Impl rule__VirtualLinkPerfSpec__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3940:2: rule__VirtualLinkPerfSpec__Group__2__Impl rule__VirtualLinkPerfSpec__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__Group__2__Impl_in_rule__VirtualLinkPerfSpec__Group__28165);
+            rule__VirtualLinkPerfSpec__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__Group__3_in_rule__VirtualLinkPerfSpec__Group__28168);
+            rule__VirtualLinkPerfSpec__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__Group__2"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3947:1: rule__VirtualLinkPerfSpec__Group__2__Impl : ( '{' ) ;
+    public final void rule__VirtualLinkPerfSpec__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3951:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3952:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3952:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3953:1: '{'
+            {
+             before(grammarAccess.getVirtualLinkPerfSpecAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__VirtualLinkPerfSpec__Group__2__Impl8196); 
+             after(grammarAccess.getVirtualLinkPerfSpecAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__Group__2__Impl"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3966:1: rule__VirtualLinkPerfSpec__Group__3 : rule__VirtualLinkPerfSpec__Group__3__Impl rule__VirtualLinkPerfSpec__Group__4 ;
+    public final void rule__VirtualLinkPerfSpec__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3970:1: ( rule__VirtualLinkPerfSpec__Group__3__Impl rule__VirtualLinkPerfSpec__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3971:2: rule__VirtualLinkPerfSpec__Group__3__Impl rule__VirtualLinkPerfSpec__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__Group__3__Impl_in_rule__VirtualLinkPerfSpec__Group__38227);
+            rule__VirtualLinkPerfSpec__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__Group__4_in_rule__VirtualLinkPerfSpec__Group__38230);
+            rule__VirtualLinkPerfSpec__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__Group__3"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3978:1: rule__VirtualLinkPerfSpec__Group__3__Impl : ( 'propagationDelay' ) ;
+    public final void rule__VirtualLinkPerfSpec__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3982:1: ( ( 'propagationDelay' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3983:1: ( 'propagationDelay' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3983:1: ( 'propagationDelay' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3984:1: 'propagationDelay'
+            {
+             before(grammarAccess.getVirtualLinkPerfSpecAccess().getPropagationDelayKeyword_3()); 
+            match(input,39,FollowSets000.FOLLOW_39_in_rule__VirtualLinkPerfSpec__Group__3__Impl8258); 
+             after(grammarAccess.getVirtualLinkPerfSpecAccess().getPropagationDelayKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__Group__3__Impl"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:3997:1: rule__VirtualLinkPerfSpec__Group__4 : rule__VirtualLinkPerfSpec__Group__4__Impl rule__VirtualLinkPerfSpec__Group__5 ;
+    public final void rule__VirtualLinkPerfSpec__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4001:1: ( rule__VirtualLinkPerfSpec__Group__4__Impl rule__VirtualLinkPerfSpec__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4002:2: rule__VirtualLinkPerfSpec__Group__4__Impl rule__VirtualLinkPerfSpec__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__Group__4__Impl_in_rule__VirtualLinkPerfSpec__Group__48289);
+            rule__VirtualLinkPerfSpec__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__Group__5_in_rule__VirtualLinkPerfSpec__Group__48292);
+            rule__VirtualLinkPerfSpec__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__Group__4"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4009:1: rule__VirtualLinkPerfSpec__Group__4__Impl : ( ( rule__VirtualLinkPerfSpec__PropagationDelayAssignment_4 ) ) ;
+    public final void rule__VirtualLinkPerfSpec__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4013:1: ( ( ( rule__VirtualLinkPerfSpec__PropagationDelayAssignment_4 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4014:1: ( ( rule__VirtualLinkPerfSpec__PropagationDelayAssignment_4 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4014:1: ( ( rule__VirtualLinkPerfSpec__PropagationDelayAssignment_4 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4015:1: ( rule__VirtualLinkPerfSpec__PropagationDelayAssignment_4 )
+            {
+             before(grammarAccess.getVirtualLinkPerfSpecAccess().getPropagationDelayAssignment_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4016:1: ( rule__VirtualLinkPerfSpec__PropagationDelayAssignment_4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4016:2: rule__VirtualLinkPerfSpec__PropagationDelayAssignment_4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__PropagationDelayAssignment_4_in_rule__VirtualLinkPerfSpec__Group__4__Impl8319);
+            rule__VirtualLinkPerfSpec__PropagationDelayAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualLinkPerfSpecAccess().getPropagationDelayAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__Group__4__Impl"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4026:1: rule__VirtualLinkPerfSpec__Group__5 : rule__VirtualLinkPerfSpec__Group__5__Impl rule__VirtualLinkPerfSpec__Group__6 ;
+    public final void rule__VirtualLinkPerfSpec__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4030:1: ( rule__VirtualLinkPerfSpec__Group__5__Impl rule__VirtualLinkPerfSpec__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4031:2: rule__VirtualLinkPerfSpec__Group__5__Impl rule__VirtualLinkPerfSpec__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__Group__5__Impl_in_rule__VirtualLinkPerfSpec__Group__58349);
+            rule__VirtualLinkPerfSpec__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__Group__6_in_rule__VirtualLinkPerfSpec__Group__58352);
+            rule__VirtualLinkPerfSpec__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__Group__5"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4038:1: rule__VirtualLinkPerfSpec__Group__5__Impl : ( ( rule__VirtualLinkPerfSpec__Group_5__0 )? ) ;
+    public final void rule__VirtualLinkPerfSpec__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4042:1: ( ( ( rule__VirtualLinkPerfSpec__Group_5__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4043:1: ( ( rule__VirtualLinkPerfSpec__Group_5__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4043:1: ( ( rule__VirtualLinkPerfSpec__Group_5__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4044:1: ( rule__VirtualLinkPerfSpec__Group_5__0 )?
+            {
+             before(grammarAccess.getVirtualLinkPerfSpecAccess().getGroup_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4045:1: ( rule__VirtualLinkPerfSpec__Group_5__0 )?
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0==40) ) {
+                alt19=1;
+            }
+            switch (alt19) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4045:2: rule__VirtualLinkPerfSpec__Group_5__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__Group_5__0_in_rule__VirtualLinkPerfSpec__Group__5__Impl8379);
+                    rule__VirtualLinkPerfSpec__Group_5__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getVirtualLinkPerfSpecAccess().getGroup_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__Group__5__Impl"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4055:1: rule__VirtualLinkPerfSpec__Group__6 : rule__VirtualLinkPerfSpec__Group__6__Impl ;
+    public final void rule__VirtualLinkPerfSpec__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4059:1: ( rule__VirtualLinkPerfSpec__Group__6__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4060:2: rule__VirtualLinkPerfSpec__Group__6__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__Group__6__Impl_in_rule__VirtualLinkPerfSpec__Group__68410);
+            rule__VirtualLinkPerfSpec__Group__6__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__Group__6"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4066:1: rule__VirtualLinkPerfSpec__Group__6__Impl : ( '}' ) ;
+    public final void rule__VirtualLinkPerfSpec__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4070:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4071:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4071:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4072:1: '}'
+            {
+             before(grammarAccess.getVirtualLinkPerfSpecAccess().getRightCurlyBracketKeyword_6()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__VirtualLinkPerfSpec__Group__6__Impl8438); 
+             after(grammarAccess.getVirtualLinkPerfSpecAccess().getRightCurlyBracketKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__Group__6__Impl"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__Group_5__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4099:1: rule__VirtualLinkPerfSpec__Group_5__0 : rule__VirtualLinkPerfSpec__Group_5__0__Impl rule__VirtualLinkPerfSpec__Group_5__1 ;
+    public final void rule__VirtualLinkPerfSpec__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4103:1: ( rule__VirtualLinkPerfSpec__Group_5__0__Impl rule__VirtualLinkPerfSpec__Group_5__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4104:2: rule__VirtualLinkPerfSpec__Group_5__0__Impl rule__VirtualLinkPerfSpec__Group_5__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__Group_5__0__Impl_in_rule__VirtualLinkPerfSpec__Group_5__08483);
+            rule__VirtualLinkPerfSpec__Group_5__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__Group_5__1_in_rule__VirtualLinkPerfSpec__Group_5__08486);
+            rule__VirtualLinkPerfSpec__Group_5__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__Group_5__0"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__Group_5__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4111:1: rule__VirtualLinkPerfSpec__Group_5__0__Impl : ( 'maxSupportedBandwidth' ) ;
+    public final void rule__VirtualLinkPerfSpec__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4115:1: ( ( 'maxSupportedBandwidth' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4116:1: ( 'maxSupportedBandwidth' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4116:1: ( 'maxSupportedBandwidth' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4117:1: 'maxSupportedBandwidth'
+            {
+             before(grammarAccess.getVirtualLinkPerfSpecAccess().getMaxSupportedBandwidthKeyword_5_0()); 
+            match(input,40,FollowSets000.FOLLOW_40_in_rule__VirtualLinkPerfSpec__Group_5__0__Impl8514); 
+             after(grammarAccess.getVirtualLinkPerfSpecAccess().getMaxSupportedBandwidthKeyword_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__Group_5__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4130:1: rule__VirtualLinkPerfSpec__Group_5__1 : rule__VirtualLinkPerfSpec__Group_5__1__Impl ;
+    public final void rule__VirtualLinkPerfSpec__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4134:1: ( rule__VirtualLinkPerfSpec__Group_5__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4135:2: rule__VirtualLinkPerfSpec__Group_5__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__Group_5__1__Impl_in_rule__VirtualLinkPerfSpec__Group_5__18545);
+            rule__VirtualLinkPerfSpec__Group_5__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__Group_5__1"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__Group_5__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4141:1: rule__VirtualLinkPerfSpec__Group_5__1__Impl : ( ( rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1 ) ) ;
+    public final void rule__VirtualLinkPerfSpec__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4145:1: ( ( ( rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4146:1: ( ( rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4146:1: ( ( rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4147:1: ( rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1 )
+            {
+             before(grammarAccess.getVirtualLinkPerfSpecAccess().getMaxSupportedBandwidthAssignment_5_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4148:1: ( rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4148:2: rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1_in_rule__VirtualLinkPerfSpec__Group_5__1__Impl8572);
+            rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualLinkPerfSpecAccess().getMaxSupportedBandwidthAssignment_5_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4162:1: rule__PhysicalLinkPerfSpec__Group__0 : rule__PhysicalLinkPerfSpec__Group__0__Impl rule__PhysicalLinkPerfSpec__Group__1 ;
+    public final void rule__PhysicalLinkPerfSpec__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4166:1: ( rule__PhysicalLinkPerfSpec__Group__0__Impl rule__PhysicalLinkPerfSpec__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4167:2: rule__PhysicalLinkPerfSpec__Group__0__Impl rule__PhysicalLinkPerfSpec__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__Group__0__Impl_in_rule__PhysicalLinkPerfSpec__Group__08606);
+            rule__PhysicalLinkPerfSpec__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__Group__1_in_rule__PhysicalLinkPerfSpec__Group__08609);
+            rule__PhysicalLinkPerfSpec__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__Group__0"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4174:1: rule__PhysicalLinkPerfSpec__Group__0__Impl : ( () ) ;
+    public final void rule__PhysicalLinkPerfSpec__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4178:1: ( ( () ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4179:1: ( () )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4179:1: ( () )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4180:1: ()
+            {
+             before(grammarAccess.getPhysicalLinkPerfSpecAccess().getPhysicalLinkPerfSpecAction_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4181:1: ()
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4183:1: 
+            {
+            }
+
+             after(grammarAccess.getPhysicalLinkPerfSpecAccess().getPhysicalLinkPerfSpecAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4193:1: rule__PhysicalLinkPerfSpec__Group__1 : rule__PhysicalLinkPerfSpec__Group__1__Impl rule__PhysicalLinkPerfSpec__Group__2 ;
+    public final void rule__PhysicalLinkPerfSpec__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4197:1: ( rule__PhysicalLinkPerfSpec__Group__1__Impl rule__PhysicalLinkPerfSpec__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4198:2: rule__PhysicalLinkPerfSpec__Group__1__Impl rule__PhysicalLinkPerfSpec__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__Group__1__Impl_in_rule__PhysicalLinkPerfSpec__Group__18667);
+            rule__PhysicalLinkPerfSpec__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__Group__2_in_rule__PhysicalLinkPerfSpec__Group__18670);
+            rule__PhysicalLinkPerfSpec__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__Group__1"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4205:1: rule__PhysicalLinkPerfSpec__Group__1__Impl : ( 'PhysicalLinkPerfSpec' ) ;
+    public final void rule__PhysicalLinkPerfSpec__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4209:1: ( ( 'PhysicalLinkPerfSpec' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4210:1: ( 'PhysicalLinkPerfSpec' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4210:1: ( 'PhysicalLinkPerfSpec' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4211:1: 'PhysicalLinkPerfSpec'
+            {
+             before(grammarAccess.getPhysicalLinkPerfSpecAccess().getPhysicalLinkPerfSpecKeyword_1()); 
+            match(input,41,FollowSets000.FOLLOW_41_in_rule__PhysicalLinkPerfSpec__Group__1__Impl8698); 
+             after(grammarAccess.getPhysicalLinkPerfSpecAccess().getPhysicalLinkPerfSpecKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4224:1: rule__PhysicalLinkPerfSpec__Group__2 : rule__PhysicalLinkPerfSpec__Group__2__Impl rule__PhysicalLinkPerfSpec__Group__3 ;
+    public final void rule__PhysicalLinkPerfSpec__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4228:1: ( rule__PhysicalLinkPerfSpec__Group__2__Impl rule__PhysicalLinkPerfSpec__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4229:2: rule__PhysicalLinkPerfSpec__Group__2__Impl rule__PhysicalLinkPerfSpec__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__Group__2__Impl_in_rule__PhysicalLinkPerfSpec__Group__28729);
+            rule__PhysicalLinkPerfSpec__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__Group__3_in_rule__PhysicalLinkPerfSpec__Group__28732);
+            rule__PhysicalLinkPerfSpec__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__Group__2"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4236:1: rule__PhysicalLinkPerfSpec__Group__2__Impl : ( '{' ) ;
+    public final void rule__PhysicalLinkPerfSpec__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4240:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4241:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4241:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4242:1: '{'
+            {
+             before(grammarAccess.getPhysicalLinkPerfSpecAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__PhysicalLinkPerfSpec__Group__2__Impl8760); 
+             after(grammarAccess.getPhysicalLinkPerfSpecAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4255:1: rule__PhysicalLinkPerfSpec__Group__3 : rule__PhysicalLinkPerfSpec__Group__3__Impl rule__PhysicalLinkPerfSpec__Group__4 ;
+    public final void rule__PhysicalLinkPerfSpec__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4259:1: ( rule__PhysicalLinkPerfSpec__Group__3__Impl rule__PhysicalLinkPerfSpec__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4260:2: rule__PhysicalLinkPerfSpec__Group__3__Impl rule__PhysicalLinkPerfSpec__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__Group__3__Impl_in_rule__PhysicalLinkPerfSpec__Group__38791);
+            rule__PhysicalLinkPerfSpec__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__Group__4_in_rule__PhysicalLinkPerfSpec__Group__38794);
+            rule__PhysicalLinkPerfSpec__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__Group__3"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4267:1: rule__PhysicalLinkPerfSpec__Group__3__Impl : ( 'propagationDelay' ) ;
+    public final void rule__PhysicalLinkPerfSpec__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4271:1: ( ( 'propagationDelay' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4272:1: ( 'propagationDelay' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4272:1: ( 'propagationDelay' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4273:1: 'propagationDelay'
+            {
+             before(grammarAccess.getPhysicalLinkPerfSpecAccess().getPropagationDelayKeyword_3()); 
+            match(input,39,FollowSets000.FOLLOW_39_in_rule__PhysicalLinkPerfSpec__Group__3__Impl8822); 
+             after(grammarAccess.getPhysicalLinkPerfSpecAccess().getPropagationDelayKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__Group__3__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4286:1: rule__PhysicalLinkPerfSpec__Group__4 : rule__PhysicalLinkPerfSpec__Group__4__Impl rule__PhysicalLinkPerfSpec__Group__5 ;
+    public final void rule__PhysicalLinkPerfSpec__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4290:1: ( rule__PhysicalLinkPerfSpec__Group__4__Impl rule__PhysicalLinkPerfSpec__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4291:2: rule__PhysicalLinkPerfSpec__Group__4__Impl rule__PhysicalLinkPerfSpec__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__Group__4__Impl_in_rule__PhysicalLinkPerfSpec__Group__48853);
+            rule__PhysicalLinkPerfSpec__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__Group__5_in_rule__PhysicalLinkPerfSpec__Group__48856);
+            rule__PhysicalLinkPerfSpec__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__Group__4"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4298:1: rule__PhysicalLinkPerfSpec__Group__4__Impl : ( ( rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_4 ) ) ;
+    public final void rule__PhysicalLinkPerfSpec__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4302:1: ( ( ( rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_4 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4303:1: ( ( rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_4 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4303:1: ( ( rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_4 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4304:1: ( rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_4 )
+            {
+             before(grammarAccess.getPhysicalLinkPerfSpecAccess().getPropagationDelayAssignment_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4305:1: ( rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4305:2: rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_4_in_rule__PhysicalLinkPerfSpec__Group__4__Impl8883);
+            rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalLinkPerfSpecAccess().getPropagationDelayAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__Group__4__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4315:1: rule__PhysicalLinkPerfSpec__Group__5 : rule__PhysicalLinkPerfSpec__Group__5__Impl rule__PhysicalLinkPerfSpec__Group__6 ;
+    public final void rule__PhysicalLinkPerfSpec__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4319:1: ( rule__PhysicalLinkPerfSpec__Group__5__Impl rule__PhysicalLinkPerfSpec__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4320:2: rule__PhysicalLinkPerfSpec__Group__5__Impl rule__PhysicalLinkPerfSpec__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__Group__5__Impl_in_rule__PhysicalLinkPerfSpec__Group__58913);
+            rule__PhysicalLinkPerfSpec__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__Group__6_in_rule__PhysicalLinkPerfSpec__Group__58916);
+            rule__PhysicalLinkPerfSpec__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__Group__5"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4327:1: rule__PhysicalLinkPerfSpec__Group__5__Impl : ( ( rule__PhysicalLinkPerfSpec__Group_5__0 )? ) ;
+    public final void rule__PhysicalLinkPerfSpec__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4331:1: ( ( ( rule__PhysicalLinkPerfSpec__Group_5__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4332:1: ( ( rule__PhysicalLinkPerfSpec__Group_5__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4332:1: ( ( rule__PhysicalLinkPerfSpec__Group_5__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4333:1: ( rule__PhysicalLinkPerfSpec__Group_5__0 )?
+            {
+             before(grammarAccess.getPhysicalLinkPerfSpecAccess().getGroup_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4334:1: ( rule__PhysicalLinkPerfSpec__Group_5__0 )?
+            int alt20=2;
+            int LA20_0 = input.LA(1);
+
+            if ( (LA20_0==40) ) {
+                alt20=1;
+            }
+            switch (alt20) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4334:2: rule__PhysicalLinkPerfSpec__Group_5__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__Group_5__0_in_rule__PhysicalLinkPerfSpec__Group__5__Impl8943);
+                    rule__PhysicalLinkPerfSpec__Group_5__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getPhysicalLinkPerfSpecAccess().getGroup_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__Group__5__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4344:1: rule__PhysicalLinkPerfSpec__Group__6 : rule__PhysicalLinkPerfSpec__Group__6__Impl ;
+    public final void rule__PhysicalLinkPerfSpec__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4348:1: ( rule__PhysicalLinkPerfSpec__Group__6__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4349:2: rule__PhysicalLinkPerfSpec__Group__6__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__Group__6__Impl_in_rule__PhysicalLinkPerfSpec__Group__68974);
+            rule__PhysicalLinkPerfSpec__Group__6__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__Group__6"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4355:1: rule__PhysicalLinkPerfSpec__Group__6__Impl : ( '}' ) ;
+    public final void rule__PhysicalLinkPerfSpec__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4359:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4360:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4360:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4361:1: '}'
+            {
+             before(grammarAccess.getPhysicalLinkPerfSpecAccess().getRightCurlyBracketKeyword_6()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__PhysicalLinkPerfSpec__Group__6__Impl9002); 
+             after(grammarAccess.getPhysicalLinkPerfSpecAccess().getRightCurlyBracketKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__Group__6__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__Group_5__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4388:1: rule__PhysicalLinkPerfSpec__Group_5__0 : rule__PhysicalLinkPerfSpec__Group_5__0__Impl rule__PhysicalLinkPerfSpec__Group_5__1 ;
+    public final void rule__PhysicalLinkPerfSpec__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4392:1: ( rule__PhysicalLinkPerfSpec__Group_5__0__Impl rule__PhysicalLinkPerfSpec__Group_5__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4393:2: rule__PhysicalLinkPerfSpec__Group_5__0__Impl rule__PhysicalLinkPerfSpec__Group_5__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__Group_5__0__Impl_in_rule__PhysicalLinkPerfSpec__Group_5__09047);
+            rule__PhysicalLinkPerfSpec__Group_5__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__Group_5__1_in_rule__PhysicalLinkPerfSpec__Group_5__09050);
+            rule__PhysicalLinkPerfSpec__Group_5__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__Group_5__0"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__Group_5__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4400:1: rule__PhysicalLinkPerfSpec__Group_5__0__Impl : ( 'maxSupportedBandwidth' ) ;
+    public final void rule__PhysicalLinkPerfSpec__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4404:1: ( ( 'maxSupportedBandwidth' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4405:1: ( 'maxSupportedBandwidth' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4405:1: ( 'maxSupportedBandwidth' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4406:1: 'maxSupportedBandwidth'
+            {
+             before(grammarAccess.getPhysicalLinkPerfSpecAccess().getMaxSupportedBandwidthKeyword_5_0()); 
+            match(input,40,FollowSets000.FOLLOW_40_in_rule__PhysicalLinkPerfSpec__Group_5__0__Impl9078); 
+             after(grammarAccess.getPhysicalLinkPerfSpecAccess().getMaxSupportedBandwidthKeyword_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__Group_5__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4419:1: rule__PhysicalLinkPerfSpec__Group_5__1 : rule__PhysicalLinkPerfSpec__Group_5__1__Impl ;
+    public final void rule__PhysicalLinkPerfSpec__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4423:1: ( rule__PhysicalLinkPerfSpec__Group_5__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4424:2: rule__PhysicalLinkPerfSpec__Group_5__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__Group_5__1__Impl_in_rule__PhysicalLinkPerfSpec__Group_5__19109);
+            rule__PhysicalLinkPerfSpec__Group_5__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__Group_5__1"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__Group_5__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4430:1: rule__PhysicalLinkPerfSpec__Group_5__1__Impl : ( ( rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1 ) ) ;
+    public final void rule__PhysicalLinkPerfSpec__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4434:1: ( ( ( rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4435:1: ( ( rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4435:1: ( ( rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4436:1: ( rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1 )
+            {
+             before(grammarAccess.getPhysicalLinkPerfSpecAccess().getMaxSupportedBandwidthAssignment_5_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4437:1: ( rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4437:2: rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1_in_rule__PhysicalLinkPerfSpec__Group_5__1__Impl9136);
+            rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalLinkPerfSpecAccess().getMaxSupportedBandwidthAssignment_5_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__IntermediateNodePerfSpec__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4451:1: rule__IntermediateNodePerfSpec__Group__0 : rule__IntermediateNodePerfSpec__Group__0__Impl rule__IntermediateNodePerfSpec__Group__1 ;
+    public final void rule__IntermediateNodePerfSpec__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4455:1: ( rule__IntermediateNodePerfSpec__Group__0__Impl rule__IntermediateNodePerfSpec__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4456:2: rule__IntermediateNodePerfSpec__Group__0__Impl rule__IntermediateNodePerfSpec__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IntermediateNodePerfSpec__Group__0__Impl_in_rule__IntermediateNodePerfSpec__Group__09170);
+            rule__IntermediateNodePerfSpec__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__IntermediateNodePerfSpec__Group__1_in_rule__IntermediateNodePerfSpec__Group__09173);
+            rule__IntermediateNodePerfSpec__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntermediateNodePerfSpec__Group__0"
+
+
+    // $ANTLR start "rule__IntermediateNodePerfSpec__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4463:1: rule__IntermediateNodePerfSpec__Group__0__Impl : ( 'IntermediateNodePerfSpec' ) ;
+    public final void rule__IntermediateNodePerfSpec__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4467:1: ( ( 'IntermediateNodePerfSpec' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4468:1: ( 'IntermediateNodePerfSpec' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4468:1: ( 'IntermediateNodePerfSpec' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4469:1: 'IntermediateNodePerfSpec'
+            {
+             before(grammarAccess.getIntermediateNodePerfSpecAccess().getIntermediateNodePerfSpecKeyword_0()); 
+            match(input,42,FollowSets000.FOLLOW_42_in_rule__IntermediateNodePerfSpec__Group__0__Impl9201); 
+             after(grammarAccess.getIntermediateNodePerfSpecAccess().getIntermediateNodePerfSpecKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntermediateNodePerfSpec__Group__0__Impl"
+
+
+    // $ANTLR start "rule__IntermediateNodePerfSpec__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4482:1: rule__IntermediateNodePerfSpec__Group__1 : rule__IntermediateNodePerfSpec__Group__1__Impl rule__IntermediateNodePerfSpec__Group__2 ;
+    public final void rule__IntermediateNodePerfSpec__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4486:1: ( rule__IntermediateNodePerfSpec__Group__1__Impl rule__IntermediateNodePerfSpec__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4487:2: rule__IntermediateNodePerfSpec__Group__1__Impl rule__IntermediateNodePerfSpec__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IntermediateNodePerfSpec__Group__1__Impl_in_rule__IntermediateNodePerfSpec__Group__19232);
+            rule__IntermediateNodePerfSpec__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__IntermediateNodePerfSpec__Group__2_in_rule__IntermediateNodePerfSpec__Group__19235);
+            rule__IntermediateNodePerfSpec__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntermediateNodePerfSpec__Group__1"
+
+
+    // $ANTLR start "rule__IntermediateNodePerfSpec__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4494:1: rule__IntermediateNodePerfSpec__Group__1__Impl : ( '{' ) ;
+    public final void rule__IntermediateNodePerfSpec__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4498:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4499:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4499:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4500:1: '{'
+            {
+             before(grammarAccess.getIntermediateNodePerfSpecAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__IntermediateNodePerfSpec__Group__1__Impl9263); 
+             after(grammarAccess.getIntermediateNodePerfSpecAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntermediateNodePerfSpec__Group__1__Impl"
+
+
+    // $ANTLR start "rule__IntermediateNodePerfSpec__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4513:1: rule__IntermediateNodePerfSpec__Group__2 : rule__IntermediateNodePerfSpec__Group__2__Impl rule__IntermediateNodePerfSpec__Group__3 ;
+    public final void rule__IntermediateNodePerfSpec__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4517:1: ( rule__IntermediateNodePerfSpec__Group__2__Impl rule__IntermediateNodePerfSpec__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4518:2: rule__IntermediateNodePerfSpec__Group__2__Impl rule__IntermediateNodePerfSpec__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IntermediateNodePerfSpec__Group__2__Impl_in_rule__IntermediateNodePerfSpec__Group__29294);
+            rule__IntermediateNodePerfSpec__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__IntermediateNodePerfSpec__Group__3_in_rule__IntermediateNodePerfSpec__Group__29297);
+            rule__IntermediateNodePerfSpec__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntermediateNodePerfSpec__Group__2"
+
+
+    // $ANTLR start "rule__IntermediateNodePerfSpec__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4525:1: rule__IntermediateNodePerfSpec__Group__2__Impl : ( 'dataplane' ) ;
+    public final void rule__IntermediateNodePerfSpec__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4529:1: ( ( 'dataplane' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4530:1: ( 'dataplane' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4530:1: ( 'dataplane' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4531:1: 'dataplane'
+            {
+             before(grammarAccess.getIntermediateNodePerfSpecAccess().getDataplaneKeyword_2()); 
+            match(input,43,FollowSets000.FOLLOW_43_in_rule__IntermediateNodePerfSpec__Group__2__Impl9325); 
+             after(grammarAccess.getIntermediateNodePerfSpecAccess().getDataplaneKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntermediateNodePerfSpec__Group__2__Impl"
+
+
+    // $ANTLR start "rule__IntermediateNodePerfSpec__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4544:1: rule__IntermediateNodePerfSpec__Group__3 : rule__IntermediateNodePerfSpec__Group__3__Impl rule__IntermediateNodePerfSpec__Group__4 ;
+    public final void rule__IntermediateNodePerfSpec__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4548:1: ( rule__IntermediateNodePerfSpec__Group__3__Impl rule__IntermediateNodePerfSpec__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4549:2: rule__IntermediateNodePerfSpec__Group__3__Impl rule__IntermediateNodePerfSpec__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IntermediateNodePerfSpec__Group__3__Impl_in_rule__IntermediateNodePerfSpec__Group__39356);
+            rule__IntermediateNodePerfSpec__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__IntermediateNodePerfSpec__Group__4_in_rule__IntermediateNodePerfSpec__Group__39359);
+            rule__IntermediateNodePerfSpec__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntermediateNodePerfSpec__Group__3"
+
+
+    // $ANTLR start "rule__IntermediateNodePerfSpec__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4556:1: rule__IntermediateNodePerfSpec__Group__3__Impl : ( ( rule__IntermediateNodePerfSpec__DataplaneAssignment_3 ) ) ;
+    public final void rule__IntermediateNodePerfSpec__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4560:1: ( ( ( rule__IntermediateNodePerfSpec__DataplaneAssignment_3 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4561:1: ( ( rule__IntermediateNodePerfSpec__DataplaneAssignment_3 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4561:1: ( ( rule__IntermediateNodePerfSpec__DataplaneAssignment_3 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4562:1: ( rule__IntermediateNodePerfSpec__DataplaneAssignment_3 )
+            {
+             before(grammarAccess.getIntermediateNodePerfSpecAccess().getDataplaneAssignment_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4563:1: ( rule__IntermediateNodePerfSpec__DataplaneAssignment_3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4563:2: rule__IntermediateNodePerfSpec__DataplaneAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IntermediateNodePerfSpec__DataplaneAssignment_3_in_rule__IntermediateNodePerfSpec__Group__3__Impl9386);
+            rule__IntermediateNodePerfSpec__DataplaneAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getIntermediateNodePerfSpecAccess().getDataplaneAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntermediateNodePerfSpec__Group__3__Impl"
+
+
+    // $ANTLR start "rule__IntermediateNodePerfSpec__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4573:1: rule__IntermediateNodePerfSpec__Group__4 : rule__IntermediateNodePerfSpec__Group__4__Impl rule__IntermediateNodePerfSpec__Group__5 ;
+    public final void rule__IntermediateNodePerfSpec__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4577:1: ( rule__IntermediateNodePerfSpec__Group__4__Impl rule__IntermediateNodePerfSpec__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4578:2: rule__IntermediateNodePerfSpec__Group__4__Impl rule__IntermediateNodePerfSpec__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IntermediateNodePerfSpec__Group__4__Impl_in_rule__IntermediateNodePerfSpec__Group__49416);
+            rule__IntermediateNodePerfSpec__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__IntermediateNodePerfSpec__Group__5_in_rule__IntermediateNodePerfSpec__Group__49419);
+            rule__IntermediateNodePerfSpec__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntermediateNodePerfSpec__Group__4"
+
+
+    // $ANTLR start "rule__IntermediateNodePerfSpec__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4585:1: rule__IntermediateNodePerfSpec__Group__4__Impl : ( 'controlplane' ) ;
+    public final void rule__IntermediateNodePerfSpec__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4589:1: ( ( 'controlplane' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4590:1: ( 'controlplane' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4590:1: ( 'controlplane' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4591:1: 'controlplane'
+            {
+             before(grammarAccess.getIntermediateNodePerfSpecAccess().getControlplaneKeyword_4()); 
+            match(input,44,FollowSets000.FOLLOW_44_in_rule__IntermediateNodePerfSpec__Group__4__Impl9447); 
+             after(grammarAccess.getIntermediateNodePerfSpecAccess().getControlplaneKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntermediateNodePerfSpec__Group__4__Impl"
+
+
+    // $ANTLR start "rule__IntermediateNodePerfSpec__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4604:1: rule__IntermediateNodePerfSpec__Group__5 : rule__IntermediateNodePerfSpec__Group__5__Impl rule__IntermediateNodePerfSpec__Group__6 ;
+    public final void rule__IntermediateNodePerfSpec__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4608:1: ( rule__IntermediateNodePerfSpec__Group__5__Impl rule__IntermediateNodePerfSpec__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4609:2: rule__IntermediateNodePerfSpec__Group__5__Impl rule__IntermediateNodePerfSpec__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IntermediateNodePerfSpec__Group__5__Impl_in_rule__IntermediateNodePerfSpec__Group__59478);
+            rule__IntermediateNodePerfSpec__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__IntermediateNodePerfSpec__Group__6_in_rule__IntermediateNodePerfSpec__Group__59481);
+            rule__IntermediateNodePerfSpec__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntermediateNodePerfSpec__Group__5"
+
+
+    // $ANTLR start "rule__IntermediateNodePerfSpec__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4616:1: rule__IntermediateNodePerfSpec__Group__5__Impl : ( ( rule__IntermediateNodePerfSpec__ControlplaneAssignment_5 ) ) ;
+    public final void rule__IntermediateNodePerfSpec__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4620:1: ( ( ( rule__IntermediateNodePerfSpec__ControlplaneAssignment_5 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4621:1: ( ( rule__IntermediateNodePerfSpec__ControlplaneAssignment_5 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4621:1: ( ( rule__IntermediateNodePerfSpec__ControlplaneAssignment_5 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4622:1: ( rule__IntermediateNodePerfSpec__ControlplaneAssignment_5 )
+            {
+             before(grammarAccess.getIntermediateNodePerfSpecAccess().getControlplaneAssignment_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4623:1: ( rule__IntermediateNodePerfSpec__ControlplaneAssignment_5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4623:2: rule__IntermediateNodePerfSpec__ControlplaneAssignment_5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IntermediateNodePerfSpec__ControlplaneAssignment_5_in_rule__IntermediateNodePerfSpec__Group__5__Impl9508);
+            rule__IntermediateNodePerfSpec__ControlplaneAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getIntermediateNodePerfSpecAccess().getControlplaneAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntermediateNodePerfSpec__Group__5__Impl"
+
+
+    // $ANTLR start "rule__IntermediateNodePerfSpec__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4633:1: rule__IntermediateNodePerfSpec__Group__6 : rule__IntermediateNodePerfSpec__Group__6__Impl ;
+    public final void rule__IntermediateNodePerfSpec__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4637:1: ( rule__IntermediateNodePerfSpec__Group__6__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4638:2: rule__IntermediateNodePerfSpec__Group__6__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__IntermediateNodePerfSpec__Group__6__Impl_in_rule__IntermediateNodePerfSpec__Group__69538);
+            rule__IntermediateNodePerfSpec__Group__6__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntermediateNodePerfSpec__Group__6"
+
+
+    // $ANTLR start "rule__IntermediateNodePerfSpec__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4644:1: rule__IntermediateNodePerfSpec__Group__6__Impl : ( '}' ) ;
+    public final void rule__IntermediateNodePerfSpec__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4648:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4649:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4649:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4650:1: '}'
+            {
+             before(grammarAccess.getIntermediateNodePerfSpecAccess().getRightCurlyBracketKeyword_6()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__IntermediateNodePerfSpec__Group__6__Impl9566); 
+             after(grammarAccess.getIntermediateNodePerfSpecAccess().getRightCurlyBracketKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntermediateNodePerfSpec__Group__6__Impl"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4677:1: rule__ControlPlanePerfSpec__Group__0 : rule__ControlPlanePerfSpec__Group__0__Impl rule__ControlPlanePerfSpec__Group__1 ;
+    public final void rule__ControlPlanePerfSpec__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4681:1: ( rule__ControlPlanePerfSpec__Group__0__Impl rule__ControlPlanePerfSpec__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4682:2: rule__ControlPlanePerfSpec__Group__0__Impl rule__ControlPlanePerfSpec__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__Group__0__Impl_in_rule__ControlPlanePerfSpec__Group__09611);
+            rule__ControlPlanePerfSpec__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__Group__1_in_rule__ControlPlanePerfSpec__Group__09614);
+            rule__ControlPlanePerfSpec__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__Group__0"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4689:1: rule__ControlPlanePerfSpec__Group__0__Impl : ( 'DataPlanePerfSpec' ) ;
+    public final void rule__ControlPlanePerfSpec__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4693:1: ( ( 'DataPlanePerfSpec' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4694:1: ( 'DataPlanePerfSpec' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4694:1: ( 'DataPlanePerfSpec' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4695:1: 'DataPlanePerfSpec'
+            {
+             before(grammarAccess.getControlPlanePerfSpecAccess().getDataPlanePerfSpecKeyword_0()); 
+            match(input,45,FollowSets000.FOLLOW_45_in_rule__ControlPlanePerfSpec__Group__0__Impl9642); 
+             after(grammarAccess.getControlPlanePerfSpecAccess().getDataPlanePerfSpecKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4708:1: rule__ControlPlanePerfSpec__Group__1 : rule__ControlPlanePerfSpec__Group__1__Impl rule__ControlPlanePerfSpec__Group__2 ;
+    public final void rule__ControlPlanePerfSpec__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4712:1: ( rule__ControlPlanePerfSpec__Group__1__Impl rule__ControlPlanePerfSpec__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4713:2: rule__ControlPlanePerfSpec__Group__1__Impl rule__ControlPlanePerfSpec__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__Group__1__Impl_in_rule__ControlPlanePerfSpec__Group__19673);
+            rule__ControlPlanePerfSpec__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__Group__2_in_rule__ControlPlanePerfSpec__Group__19676);
+            rule__ControlPlanePerfSpec__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__Group__1"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4720:1: rule__ControlPlanePerfSpec__Group__1__Impl : ( '{' ) ;
+    public final void rule__ControlPlanePerfSpec__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4724:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4725:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4725:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4726:1: '{'
+            {
+             before(grammarAccess.getControlPlanePerfSpecAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__ControlPlanePerfSpec__Group__1__Impl9704); 
+             after(grammarAccess.getControlPlanePerfSpecAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4739:1: rule__ControlPlanePerfSpec__Group__2 : rule__ControlPlanePerfSpec__Group__2__Impl rule__ControlPlanePerfSpec__Group__3 ;
+    public final void rule__ControlPlanePerfSpec__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4743:1: ( rule__ControlPlanePerfSpec__Group__2__Impl rule__ControlPlanePerfSpec__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4744:2: rule__ControlPlanePerfSpec__Group__2__Impl rule__ControlPlanePerfSpec__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__Group__2__Impl_in_rule__ControlPlanePerfSpec__Group__29735);
+            rule__ControlPlanePerfSpec__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__Group__3_in_rule__ControlPlanePerfSpec__Group__29738);
+            rule__ControlPlanePerfSpec__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__Group__2"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4751:1: rule__ControlPlanePerfSpec__Group__2__Impl : ( 'processingLatency' ) ;
+    public final void rule__ControlPlanePerfSpec__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4755:1: ( ( 'processingLatency' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4756:1: ( 'processingLatency' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4756:1: ( 'processingLatency' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4757:1: 'processingLatency'
+            {
+             before(grammarAccess.getControlPlanePerfSpecAccess().getProcessingLatencyKeyword_2()); 
+            match(input,46,FollowSets000.FOLLOW_46_in_rule__ControlPlanePerfSpec__Group__2__Impl9766); 
+             after(grammarAccess.getControlPlanePerfSpecAccess().getProcessingLatencyKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4770:1: rule__ControlPlanePerfSpec__Group__3 : rule__ControlPlanePerfSpec__Group__3__Impl rule__ControlPlanePerfSpec__Group__4 ;
+    public final void rule__ControlPlanePerfSpec__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4774:1: ( rule__ControlPlanePerfSpec__Group__3__Impl rule__ControlPlanePerfSpec__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4775:2: rule__ControlPlanePerfSpec__Group__3__Impl rule__ControlPlanePerfSpec__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__Group__3__Impl_in_rule__ControlPlanePerfSpec__Group__39797);
+            rule__ControlPlanePerfSpec__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__Group__4_in_rule__ControlPlanePerfSpec__Group__39800);
+            rule__ControlPlanePerfSpec__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__Group__3"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4782:1: rule__ControlPlanePerfSpec__Group__3__Impl : ( ( rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_3 ) ) ;
+    public final void rule__ControlPlanePerfSpec__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4786:1: ( ( ( rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_3 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4787:1: ( ( rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_3 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4787:1: ( ( rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_3 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4788:1: ( rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_3 )
+            {
+             before(grammarAccess.getControlPlanePerfSpecAccess().getProcessingLatencyAssignment_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4789:1: ( rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4789:2: rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_3_in_rule__ControlPlanePerfSpec__Group__3__Impl9827);
+            rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getControlPlanePerfSpecAccess().getProcessingLatencyAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4799:1: rule__ControlPlanePerfSpec__Group__4 : rule__ControlPlanePerfSpec__Group__4__Impl rule__ControlPlanePerfSpec__Group__5 ;
+    public final void rule__ControlPlanePerfSpec__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4803:1: ( rule__ControlPlanePerfSpec__Group__4__Impl rule__ControlPlanePerfSpec__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4804:2: rule__ControlPlanePerfSpec__Group__4__Impl rule__ControlPlanePerfSpec__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__Group__4__Impl_in_rule__ControlPlanePerfSpec__Group__49857);
+            rule__ControlPlanePerfSpec__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__Group__5_in_rule__ControlPlanePerfSpec__Group__49860);
+            rule__ControlPlanePerfSpec__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__Group__4"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4811:1: rule__ControlPlanePerfSpec__Group__4__Impl : ( 'processingBandwidthReqPS' ) ;
+    public final void rule__ControlPlanePerfSpec__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4815:1: ( ( 'processingBandwidthReqPS' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4816:1: ( 'processingBandwidthReqPS' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4816:1: ( 'processingBandwidthReqPS' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4817:1: 'processingBandwidthReqPS'
+            {
+             before(grammarAccess.getControlPlanePerfSpecAccess().getProcessingBandwidthReqPSKeyword_4()); 
+            match(input,47,FollowSets000.FOLLOW_47_in_rule__ControlPlanePerfSpec__Group__4__Impl9888); 
+             after(grammarAccess.getControlPlanePerfSpecAccess().getProcessingBandwidthReqPSKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4830:1: rule__ControlPlanePerfSpec__Group__5 : rule__ControlPlanePerfSpec__Group__5__Impl rule__ControlPlanePerfSpec__Group__6 ;
+    public final void rule__ControlPlanePerfSpec__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4834:1: ( rule__ControlPlanePerfSpec__Group__5__Impl rule__ControlPlanePerfSpec__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4835:2: rule__ControlPlanePerfSpec__Group__5__Impl rule__ControlPlanePerfSpec__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__Group__5__Impl_in_rule__ControlPlanePerfSpec__Group__59919);
+            rule__ControlPlanePerfSpec__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__Group__6_in_rule__ControlPlanePerfSpec__Group__59922);
+            rule__ControlPlanePerfSpec__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__Group__5"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4842:1: rule__ControlPlanePerfSpec__Group__5__Impl : ( ( rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_5 ) ) ;
+    public final void rule__ControlPlanePerfSpec__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4846:1: ( ( ( rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_5 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4847:1: ( ( rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_5 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4847:1: ( ( rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_5 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4848:1: ( rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_5 )
+            {
+             before(grammarAccess.getControlPlanePerfSpecAccess().getProcessingBandwidthReqPSAssignment_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4849:1: ( rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4849:2: rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_5_in_rule__ControlPlanePerfSpec__Group__5__Impl9949);
+            rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getControlPlanePerfSpecAccess().getProcessingBandwidthReqPSAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__Group__5__Impl"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4859:1: rule__ControlPlanePerfSpec__Group__6 : rule__ControlPlanePerfSpec__Group__6__Impl rule__ControlPlanePerfSpec__Group__7 ;
+    public final void rule__ControlPlanePerfSpec__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4863:1: ( rule__ControlPlanePerfSpec__Group__6__Impl rule__ControlPlanePerfSpec__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4864:2: rule__ControlPlanePerfSpec__Group__6__Impl rule__ControlPlanePerfSpec__Group__7
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__Group__6__Impl_in_rule__ControlPlanePerfSpec__Group__69979);
+            rule__ControlPlanePerfSpec__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__Group__7_in_rule__ControlPlanePerfSpec__Group__69982);
+            rule__ControlPlanePerfSpec__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__Group__6"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4871:1: rule__ControlPlanePerfSpec__Group__6__Impl : ( 'packetProcessingTime' ) ;
+    public final void rule__ControlPlanePerfSpec__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4875:1: ( ( 'packetProcessingTime' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4876:1: ( 'packetProcessingTime' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4876:1: ( 'packetProcessingTime' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4877:1: 'packetProcessingTime'
+            {
+             before(grammarAccess.getControlPlanePerfSpecAccess().getPacketProcessingTimeKeyword_6()); 
+            match(input,34,FollowSets000.FOLLOW_34_in_rule__ControlPlanePerfSpec__Group__6__Impl10010); 
+             after(grammarAccess.getControlPlanePerfSpecAccess().getPacketProcessingTimeKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__Group__6__Impl"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4890:1: rule__ControlPlanePerfSpec__Group__7 : rule__ControlPlanePerfSpec__Group__7__Impl rule__ControlPlanePerfSpec__Group__8 ;
+    public final void rule__ControlPlanePerfSpec__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4894:1: ( rule__ControlPlanePerfSpec__Group__7__Impl rule__ControlPlanePerfSpec__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4895:2: rule__ControlPlanePerfSpec__Group__7__Impl rule__ControlPlanePerfSpec__Group__8
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__Group__7__Impl_in_rule__ControlPlanePerfSpec__Group__710041);
+            rule__ControlPlanePerfSpec__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__Group__8_in_rule__ControlPlanePerfSpec__Group__710044);
+            rule__ControlPlanePerfSpec__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__Group__7"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4902:1: rule__ControlPlanePerfSpec__Group__7__Impl : ( ( rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_7 ) ) ;
+    public final void rule__ControlPlanePerfSpec__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4906:1: ( ( ( rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_7 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4907:1: ( ( rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_7 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4907:1: ( ( rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_7 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4908:1: ( rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_7 )
+            {
+             before(grammarAccess.getControlPlanePerfSpecAccess().getPacketProcessingTimeAssignment_7()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4909:1: ( rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4909:2: rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_7
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_7_in_rule__ControlPlanePerfSpec__Group__7__Impl10071);
+            rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_7();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getControlPlanePerfSpecAccess().getPacketProcessingTimeAssignment_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__Group__7__Impl"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4919:1: rule__ControlPlanePerfSpec__Group__8 : rule__ControlPlanePerfSpec__Group__8__Impl ;
+    public final void rule__ControlPlanePerfSpec__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4923:1: ( rule__ControlPlanePerfSpec__Group__8__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4924:2: rule__ControlPlanePerfSpec__Group__8__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ControlPlanePerfSpec__Group__8__Impl_in_rule__ControlPlanePerfSpec__Group__810101);
+            rule__ControlPlanePerfSpec__Group__8__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__Group__8"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4930:1: rule__ControlPlanePerfSpec__Group__8__Impl : ( '}' ) ;
+    public final void rule__ControlPlanePerfSpec__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4934:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4935:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4935:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4936:1: '}'
+            {
+             before(grammarAccess.getControlPlanePerfSpecAccess().getRightCurlyBracketKeyword_8()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__ControlPlanePerfSpec__Group__8__Impl10129); 
+             after(grammarAccess.getControlPlanePerfSpecAccess().getRightCurlyBracketKeyword_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__Group__8__Impl"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4967:1: rule__DataPlanePerfSpec__Group__0 : rule__DataPlanePerfSpec__Group__0__Impl rule__DataPlanePerfSpec__Group__1 ;
+    public final void rule__DataPlanePerfSpec__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4971:1: ( rule__DataPlanePerfSpec__Group__0__Impl rule__DataPlanePerfSpec__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4972:2: rule__DataPlanePerfSpec__Group__0__Impl rule__DataPlanePerfSpec__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__0__Impl_in_rule__DataPlanePerfSpec__Group__010178);
+            rule__DataPlanePerfSpec__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__1_in_rule__DataPlanePerfSpec__Group__010181);
+            rule__DataPlanePerfSpec__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__0"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4979:1: rule__DataPlanePerfSpec__Group__0__Impl : ( 'DataPlanePerfSpec' ) ;
+    public final void rule__DataPlanePerfSpec__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4983:1: ( ( 'DataPlanePerfSpec' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4984:1: ( 'DataPlanePerfSpec' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4984:1: ( 'DataPlanePerfSpec' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4985:1: 'DataPlanePerfSpec'
+            {
+             before(grammarAccess.getDataPlanePerfSpecAccess().getDataPlanePerfSpecKeyword_0()); 
+            match(input,45,FollowSets000.FOLLOW_45_in_rule__DataPlanePerfSpec__Group__0__Impl10209); 
+             after(grammarAccess.getDataPlanePerfSpecAccess().getDataPlanePerfSpecKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__0__Impl"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:4998:1: rule__DataPlanePerfSpec__Group__1 : rule__DataPlanePerfSpec__Group__1__Impl rule__DataPlanePerfSpec__Group__2 ;
+    public final void rule__DataPlanePerfSpec__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5002:1: ( rule__DataPlanePerfSpec__Group__1__Impl rule__DataPlanePerfSpec__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5003:2: rule__DataPlanePerfSpec__Group__1__Impl rule__DataPlanePerfSpec__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__1__Impl_in_rule__DataPlanePerfSpec__Group__110240);
+            rule__DataPlanePerfSpec__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__2_in_rule__DataPlanePerfSpec__Group__110243);
+            rule__DataPlanePerfSpec__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__1"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5010:1: rule__DataPlanePerfSpec__Group__1__Impl : ( '{' ) ;
+    public final void rule__DataPlanePerfSpec__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5014:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5015:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5015:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5016:1: '{'
+            {
+             before(grammarAccess.getDataPlanePerfSpecAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__DataPlanePerfSpec__Group__1__Impl10271); 
+             after(grammarAccess.getDataPlanePerfSpecAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__1__Impl"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5029:1: rule__DataPlanePerfSpec__Group__2 : rule__DataPlanePerfSpec__Group__2__Impl rule__DataPlanePerfSpec__Group__3 ;
+    public final void rule__DataPlanePerfSpec__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5033:1: ( rule__DataPlanePerfSpec__Group__2__Impl rule__DataPlanePerfSpec__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5034:2: rule__DataPlanePerfSpec__Group__2__Impl rule__DataPlanePerfSpec__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__2__Impl_in_rule__DataPlanePerfSpec__Group__210302);
+            rule__DataPlanePerfSpec__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__3_in_rule__DataPlanePerfSpec__Group__210305);
+            rule__DataPlanePerfSpec__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__2"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5041:1: rule__DataPlanePerfSpec__Group__2__Impl : ( 'forwardingLatency' ) ;
+    public final void rule__DataPlanePerfSpec__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5045:1: ( ( 'forwardingLatency' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5046:1: ( 'forwardingLatency' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5046:1: ( 'forwardingLatency' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5047:1: 'forwardingLatency'
+            {
+             before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingLatencyKeyword_2()); 
+            match(input,48,FollowSets000.FOLLOW_48_in_rule__DataPlanePerfSpec__Group__2__Impl10333); 
+             after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingLatencyKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__2__Impl"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5060:1: rule__DataPlanePerfSpec__Group__3 : rule__DataPlanePerfSpec__Group__3__Impl rule__DataPlanePerfSpec__Group__4 ;
+    public final void rule__DataPlanePerfSpec__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5064:1: ( rule__DataPlanePerfSpec__Group__3__Impl rule__DataPlanePerfSpec__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5065:2: rule__DataPlanePerfSpec__Group__3__Impl rule__DataPlanePerfSpec__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__3__Impl_in_rule__DataPlanePerfSpec__Group__310364);
+            rule__DataPlanePerfSpec__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__4_in_rule__DataPlanePerfSpec__Group__310367);
+            rule__DataPlanePerfSpec__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__3"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5072:1: rule__DataPlanePerfSpec__Group__3__Impl : ( ( rule__DataPlanePerfSpec__ForwardingLatencyAssignment_3 ) ) ;
+    public final void rule__DataPlanePerfSpec__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5076:1: ( ( ( rule__DataPlanePerfSpec__ForwardingLatencyAssignment_3 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5077:1: ( ( rule__DataPlanePerfSpec__ForwardingLatencyAssignment_3 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5077:1: ( ( rule__DataPlanePerfSpec__ForwardingLatencyAssignment_3 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5078:1: ( rule__DataPlanePerfSpec__ForwardingLatencyAssignment_3 )
+            {
+             before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingLatencyAssignment_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5079:1: ( rule__DataPlanePerfSpec__ForwardingLatencyAssignment_3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5079:2: rule__DataPlanePerfSpec__ForwardingLatencyAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__ForwardingLatencyAssignment_3_in_rule__DataPlanePerfSpec__Group__3__Impl10394);
+            rule__DataPlanePerfSpec__ForwardingLatencyAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingLatencyAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__3__Impl"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5089:1: rule__DataPlanePerfSpec__Group__4 : rule__DataPlanePerfSpec__Group__4__Impl rule__DataPlanePerfSpec__Group__5 ;
+    public final void rule__DataPlanePerfSpec__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5093:1: ( rule__DataPlanePerfSpec__Group__4__Impl rule__DataPlanePerfSpec__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5094:2: rule__DataPlanePerfSpec__Group__4__Impl rule__DataPlanePerfSpec__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__4__Impl_in_rule__DataPlanePerfSpec__Group__410424);
+            rule__DataPlanePerfSpec__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__5_in_rule__DataPlanePerfSpec__Group__410427);
+            rule__DataPlanePerfSpec__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__4"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5101:1: rule__DataPlanePerfSpec__Group__4__Impl : ( 'forwardingBandwidthPPS' ) ;
+    public final void rule__DataPlanePerfSpec__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5105:1: ( ( 'forwardingBandwidthPPS' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5106:1: ( 'forwardingBandwidthPPS' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5106:1: ( 'forwardingBandwidthPPS' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5107:1: 'forwardingBandwidthPPS'
+            {
+             before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthPPSKeyword_4()); 
+            match(input,49,FollowSets000.FOLLOW_49_in_rule__DataPlanePerfSpec__Group__4__Impl10455); 
+             after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthPPSKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__4__Impl"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5120:1: rule__DataPlanePerfSpec__Group__5 : rule__DataPlanePerfSpec__Group__5__Impl rule__DataPlanePerfSpec__Group__6 ;
+    public final void rule__DataPlanePerfSpec__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5124:1: ( rule__DataPlanePerfSpec__Group__5__Impl rule__DataPlanePerfSpec__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5125:2: rule__DataPlanePerfSpec__Group__5__Impl rule__DataPlanePerfSpec__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__5__Impl_in_rule__DataPlanePerfSpec__Group__510486);
+            rule__DataPlanePerfSpec__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__6_in_rule__DataPlanePerfSpec__Group__510489);
+            rule__DataPlanePerfSpec__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__5"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5132:1: rule__DataPlanePerfSpec__Group__5__Impl : ( ( rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_5 ) ) ;
+    public final void rule__DataPlanePerfSpec__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5136:1: ( ( ( rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_5 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5137:1: ( ( rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_5 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5137:1: ( ( rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_5 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5138:1: ( rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_5 )
+            {
+             before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthPPSAssignment_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5139:1: ( rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5139:2: rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_5_in_rule__DataPlanePerfSpec__Group__5__Impl10516);
+            rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthPPSAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__5__Impl"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5149:1: rule__DataPlanePerfSpec__Group__6 : rule__DataPlanePerfSpec__Group__6__Impl rule__DataPlanePerfSpec__Group__7 ;
+    public final void rule__DataPlanePerfSpec__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5153:1: ( rule__DataPlanePerfSpec__Group__6__Impl rule__DataPlanePerfSpec__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5154:2: rule__DataPlanePerfSpec__Group__6__Impl rule__DataPlanePerfSpec__Group__7
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__6__Impl_in_rule__DataPlanePerfSpec__Group__610546);
+            rule__DataPlanePerfSpec__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__7_in_rule__DataPlanePerfSpec__Group__610549);
+            rule__DataPlanePerfSpec__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__6"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5161:1: rule__DataPlanePerfSpec__Group__6__Impl : ( 'forwardingBandwidthBPS' ) ;
+    public final void rule__DataPlanePerfSpec__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5165:1: ( ( 'forwardingBandwidthBPS' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5166:1: ( 'forwardingBandwidthBPS' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5166:1: ( 'forwardingBandwidthBPS' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5167:1: 'forwardingBandwidthBPS'
+            {
+             before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthBPSKeyword_6()); 
+            match(input,50,FollowSets000.FOLLOW_50_in_rule__DataPlanePerfSpec__Group__6__Impl10577); 
+             after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthBPSKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__6__Impl"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5180:1: rule__DataPlanePerfSpec__Group__7 : rule__DataPlanePerfSpec__Group__7__Impl rule__DataPlanePerfSpec__Group__8 ;
+    public final void rule__DataPlanePerfSpec__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5184:1: ( rule__DataPlanePerfSpec__Group__7__Impl rule__DataPlanePerfSpec__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5185:2: rule__DataPlanePerfSpec__Group__7__Impl rule__DataPlanePerfSpec__Group__8
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__7__Impl_in_rule__DataPlanePerfSpec__Group__710608);
+            rule__DataPlanePerfSpec__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__8_in_rule__DataPlanePerfSpec__Group__710611);
+            rule__DataPlanePerfSpec__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__7"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5192:1: rule__DataPlanePerfSpec__Group__7__Impl : ( ( rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_7 ) ) ;
+    public final void rule__DataPlanePerfSpec__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5196:1: ( ( ( rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_7 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5197:1: ( ( rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_7 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5197:1: ( ( rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_7 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5198:1: ( rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_7 )
+            {
+             before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthBPSAssignment_7()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5199:1: ( rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5199:2: rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_7
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_7_in_rule__DataPlanePerfSpec__Group__7__Impl10638);
+            rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_7();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthBPSAssignment_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__7__Impl"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5209:1: rule__DataPlanePerfSpec__Group__8 : rule__DataPlanePerfSpec__Group__8__Impl rule__DataPlanePerfSpec__Group__9 ;
+    public final void rule__DataPlanePerfSpec__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5213:1: ( rule__DataPlanePerfSpec__Group__8__Impl rule__DataPlanePerfSpec__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5214:2: rule__DataPlanePerfSpec__Group__8__Impl rule__DataPlanePerfSpec__Group__9
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__8__Impl_in_rule__DataPlanePerfSpec__Group__810668);
+            rule__DataPlanePerfSpec__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__9_in_rule__DataPlanePerfSpec__Group__810671);
+            rule__DataPlanePerfSpec__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__8"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5221:1: rule__DataPlanePerfSpec__Group__8__Impl : ( 'packetProcessingTime' ) ;
+    public final void rule__DataPlanePerfSpec__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5225:1: ( ( 'packetProcessingTime' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5226:1: ( 'packetProcessingTime' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5226:1: ( 'packetProcessingTime' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5227:1: 'packetProcessingTime'
+            {
+             before(grammarAccess.getDataPlanePerfSpecAccess().getPacketProcessingTimeKeyword_8()); 
+            match(input,34,FollowSets000.FOLLOW_34_in_rule__DataPlanePerfSpec__Group__8__Impl10699); 
+             after(grammarAccess.getDataPlanePerfSpecAccess().getPacketProcessingTimeKeyword_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__8__Impl"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5240:1: rule__DataPlanePerfSpec__Group__9 : rule__DataPlanePerfSpec__Group__9__Impl rule__DataPlanePerfSpec__Group__10 ;
+    public final void rule__DataPlanePerfSpec__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5244:1: ( rule__DataPlanePerfSpec__Group__9__Impl rule__DataPlanePerfSpec__Group__10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5245:2: rule__DataPlanePerfSpec__Group__9__Impl rule__DataPlanePerfSpec__Group__10
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__9__Impl_in_rule__DataPlanePerfSpec__Group__910730);
+            rule__DataPlanePerfSpec__Group__9__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__10_in_rule__DataPlanePerfSpec__Group__910733);
+            rule__DataPlanePerfSpec__Group__10();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__9"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5252:1: rule__DataPlanePerfSpec__Group__9__Impl : ( ( rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_9 ) ) ;
+    public final void rule__DataPlanePerfSpec__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5256:1: ( ( ( rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_9 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5257:1: ( ( rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_9 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5257:1: ( ( rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_9 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5258:1: ( rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_9 )
+            {
+             before(grammarAccess.getDataPlanePerfSpecAccess().getPacketProcessingTimeAssignment_9()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5259:1: ( rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5259:2: rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_9
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_9_in_rule__DataPlanePerfSpec__Group__9__Impl10760);
+            rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_9();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDataPlanePerfSpecAccess().getPacketProcessingTimeAssignment_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__9__Impl"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5269:1: rule__DataPlanePerfSpec__Group__10 : rule__DataPlanePerfSpec__Group__10__Impl ;
+    public final void rule__DataPlanePerfSpec__Group__10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5273:1: ( rule__DataPlanePerfSpec__Group__10__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5274:2: rule__DataPlanePerfSpec__Group__10__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__DataPlanePerfSpec__Group__10__Impl_in_rule__DataPlanePerfSpec__Group__1010790);
+            rule__DataPlanePerfSpec__Group__10__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__10"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__Group__10__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5280:1: rule__DataPlanePerfSpec__Group__10__Impl : ( '}' ) ;
+    public final void rule__DataPlanePerfSpec__Group__10__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5284:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5285:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5285:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5286:1: '}'
+            {
+             before(grammarAccess.getDataPlanePerfSpecAccess().getRightCurlyBracketKeyword_10()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__DataPlanePerfSpec__Group__10__Impl10818); 
+             after(grammarAccess.getDataPlanePerfSpecAccess().getRightCurlyBracketKeyword_10()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__Group__10__Impl"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5321:1: rule__EndNodePerfSpec__Group__0 : rule__EndNodePerfSpec__Group__0__Impl rule__EndNodePerfSpec__Group__1 ;
+    public final void rule__EndNodePerfSpec__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5325:1: ( rule__EndNodePerfSpec__Group__0__Impl rule__EndNodePerfSpec__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5326:2: rule__EndNodePerfSpec__Group__0__Impl rule__EndNodePerfSpec__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group__0__Impl_in_rule__EndNodePerfSpec__Group__010871);
+            rule__EndNodePerfSpec__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group__1_in_rule__EndNodePerfSpec__Group__010874);
+            rule__EndNodePerfSpec__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group__0"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5333:1: rule__EndNodePerfSpec__Group__0__Impl : ( 'EndNodePerfSpec' ) ;
+    public final void rule__EndNodePerfSpec__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5337:1: ( ( 'EndNodePerfSpec' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5338:1: ( 'EndNodePerfSpec' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5338:1: ( 'EndNodePerfSpec' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5339:1: 'EndNodePerfSpec'
+            {
+             before(grammarAccess.getEndNodePerfSpecAccess().getEndNodePerfSpecKeyword_0()); 
+            match(input,51,FollowSets000.FOLLOW_51_in_rule__EndNodePerfSpec__Group__0__Impl10902); 
+             after(grammarAccess.getEndNodePerfSpecAccess().getEndNodePerfSpecKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group__0__Impl"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5352:1: rule__EndNodePerfSpec__Group__1 : rule__EndNodePerfSpec__Group__1__Impl rule__EndNodePerfSpec__Group__2 ;
+    public final void rule__EndNodePerfSpec__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5356:1: ( rule__EndNodePerfSpec__Group__1__Impl rule__EndNodePerfSpec__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5357:2: rule__EndNodePerfSpec__Group__1__Impl rule__EndNodePerfSpec__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group__1__Impl_in_rule__EndNodePerfSpec__Group__110933);
+            rule__EndNodePerfSpec__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group__2_in_rule__EndNodePerfSpec__Group__110936);
+            rule__EndNodePerfSpec__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group__1"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5364:1: rule__EndNodePerfSpec__Group__1__Impl : ( '{' ) ;
+    public final void rule__EndNodePerfSpec__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5368:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5369:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5369:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5370:1: '{'
+            {
+             before(grammarAccess.getEndNodePerfSpecAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__EndNodePerfSpec__Group__1__Impl10964); 
+             after(grammarAccess.getEndNodePerfSpecAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group__1__Impl"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5383:1: rule__EndNodePerfSpec__Group__2 : rule__EndNodePerfSpec__Group__2__Impl rule__EndNodePerfSpec__Group__3 ;
+    public final void rule__EndNodePerfSpec__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5387:1: ( rule__EndNodePerfSpec__Group__2__Impl rule__EndNodePerfSpec__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5388:2: rule__EndNodePerfSpec__Group__2__Impl rule__EndNodePerfSpec__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group__2__Impl_in_rule__EndNodePerfSpec__Group__210995);
+            rule__EndNodePerfSpec__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group__3_in_rule__EndNodePerfSpec__Group__210998);
+            rule__EndNodePerfSpec__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group__2"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5395:1: rule__EndNodePerfSpec__Group__2__Impl : ( 'softwareLayersDelay' ) ;
+    public final void rule__EndNodePerfSpec__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5399:1: ( ( 'softwareLayersDelay' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5400:1: ( 'softwareLayersDelay' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5400:1: ( 'softwareLayersDelay' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5401:1: 'softwareLayersDelay'
+            {
+             before(grammarAccess.getEndNodePerfSpecAccess().getSoftwareLayersDelayKeyword_2()); 
+            match(input,52,FollowSets000.FOLLOW_52_in_rule__EndNodePerfSpec__Group__2__Impl11026); 
+             after(grammarAccess.getEndNodePerfSpecAccess().getSoftwareLayersDelayKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group__2__Impl"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5414:1: rule__EndNodePerfSpec__Group__3 : rule__EndNodePerfSpec__Group__3__Impl rule__EndNodePerfSpec__Group__4 ;
+    public final void rule__EndNodePerfSpec__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5418:1: ( rule__EndNodePerfSpec__Group__3__Impl rule__EndNodePerfSpec__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5419:2: rule__EndNodePerfSpec__Group__3__Impl rule__EndNodePerfSpec__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group__3__Impl_in_rule__EndNodePerfSpec__Group__311057);
+            rule__EndNodePerfSpec__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group__4_in_rule__EndNodePerfSpec__Group__311060);
+            rule__EndNodePerfSpec__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group__3"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5426:1: rule__EndNodePerfSpec__Group__3__Impl : ( ( rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_3 ) ) ;
+    public final void rule__EndNodePerfSpec__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5430:1: ( ( ( rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_3 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5431:1: ( ( rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_3 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5431:1: ( ( rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_3 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5432:1: ( rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_3 )
+            {
+             before(grammarAccess.getEndNodePerfSpecAccess().getSoftwareLayersDelayAssignment_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5433:1: ( rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5433:2: rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_3_in_rule__EndNodePerfSpec__Group__3__Impl11087);
+            rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEndNodePerfSpecAccess().getSoftwareLayersDelayAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group__3__Impl"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5443:1: rule__EndNodePerfSpec__Group__4 : rule__EndNodePerfSpec__Group__4__Impl rule__EndNodePerfSpec__Group__5 ;
+    public final void rule__EndNodePerfSpec__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5447:1: ( rule__EndNodePerfSpec__Group__4__Impl rule__EndNodePerfSpec__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5448:2: rule__EndNodePerfSpec__Group__4__Impl rule__EndNodePerfSpec__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group__4__Impl_in_rule__EndNodePerfSpec__Group__411117);
+            rule__EndNodePerfSpec__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group__5_in_rule__EndNodePerfSpec__Group__411120);
+            rule__EndNodePerfSpec__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group__4"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5455:1: rule__EndNodePerfSpec__Group__4__Impl : ( ( rule__EndNodePerfSpec__Group_4__0 )? ) ;
+    public final void rule__EndNodePerfSpec__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5459:1: ( ( ( rule__EndNodePerfSpec__Group_4__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5460:1: ( ( rule__EndNodePerfSpec__Group_4__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5460:1: ( ( rule__EndNodePerfSpec__Group_4__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5461:1: ( rule__EndNodePerfSpec__Group_4__0 )?
+            {
+             before(grammarAccess.getEndNodePerfSpecAccess().getGroup_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5462:1: ( rule__EndNodePerfSpec__Group_4__0 )?
+            int alt21=2;
+            int LA21_0 = input.LA(1);
+
+            if ( (LA21_0==43) ) {
+                alt21=1;
+            }
+            switch (alt21) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5462:2: rule__EndNodePerfSpec__Group_4__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group_4__0_in_rule__EndNodePerfSpec__Group__4__Impl11147);
+                    rule__EndNodePerfSpec__Group_4__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEndNodePerfSpecAccess().getGroup_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group__4__Impl"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5472:1: rule__EndNodePerfSpec__Group__5 : rule__EndNodePerfSpec__Group__5__Impl rule__EndNodePerfSpec__Group__6 ;
+    public final void rule__EndNodePerfSpec__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5476:1: ( rule__EndNodePerfSpec__Group__5__Impl rule__EndNodePerfSpec__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5477:2: rule__EndNodePerfSpec__Group__5__Impl rule__EndNodePerfSpec__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group__5__Impl_in_rule__EndNodePerfSpec__Group__511178);
+            rule__EndNodePerfSpec__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group__6_in_rule__EndNodePerfSpec__Group__511181);
+            rule__EndNodePerfSpec__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group__5"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5484:1: rule__EndNodePerfSpec__Group__5__Impl : ( ( rule__EndNodePerfSpec__Group_5__0 )? ) ;
+    public final void rule__EndNodePerfSpec__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5488:1: ( ( ( rule__EndNodePerfSpec__Group_5__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5489:1: ( ( rule__EndNodePerfSpec__Group_5__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5489:1: ( ( rule__EndNodePerfSpec__Group_5__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5490:1: ( rule__EndNodePerfSpec__Group_5__0 )?
+            {
+             before(grammarAccess.getEndNodePerfSpecAccess().getGroup_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5491:1: ( rule__EndNodePerfSpec__Group_5__0 )?
+            int alt22=2;
+            int LA22_0 = input.LA(1);
+
+            if ( (LA22_0==44) ) {
+                alt22=1;
+            }
+            switch (alt22) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5491:2: rule__EndNodePerfSpec__Group_5__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group_5__0_in_rule__EndNodePerfSpec__Group__5__Impl11208);
+                    rule__EndNodePerfSpec__Group_5__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEndNodePerfSpecAccess().getGroup_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group__5__Impl"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5501:1: rule__EndNodePerfSpec__Group__6 : rule__EndNodePerfSpec__Group__6__Impl ;
+    public final void rule__EndNodePerfSpec__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5505:1: ( rule__EndNodePerfSpec__Group__6__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5506:2: rule__EndNodePerfSpec__Group__6__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group__6__Impl_in_rule__EndNodePerfSpec__Group__611239);
+            rule__EndNodePerfSpec__Group__6__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group__6"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5512:1: rule__EndNodePerfSpec__Group__6__Impl : ( '}' ) ;
+    public final void rule__EndNodePerfSpec__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5516:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5517:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5517:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5518:1: '}'
+            {
+             before(grammarAccess.getEndNodePerfSpecAccess().getRightCurlyBracketKeyword_6()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__EndNodePerfSpec__Group__6__Impl11267); 
+             after(grammarAccess.getEndNodePerfSpecAccess().getRightCurlyBracketKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group__6__Impl"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group_4__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5545:1: rule__EndNodePerfSpec__Group_4__0 : rule__EndNodePerfSpec__Group_4__0__Impl rule__EndNodePerfSpec__Group_4__1 ;
+    public final void rule__EndNodePerfSpec__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5549:1: ( rule__EndNodePerfSpec__Group_4__0__Impl rule__EndNodePerfSpec__Group_4__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5550:2: rule__EndNodePerfSpec__Group_4__0__Impl rule__EndNodePerfSpec__Group_4__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group_4__0__Impl_in_rule__EndNodePerfSpec__Group_4__011312);
+            rule__EndNodePerfSpec__Group_4__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group_4__1_in_rule__EndNodePerfSpec__Group_4__011315);
+            rule__EndNodePerfSpec__Group_4__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group_4__0"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group_4__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5557:1: rule__EndNodePerfSpec__Group_4__0__Impl : ( 'dataplane' ) ;
+    public final void rule__EndNodePerfSpec__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5561:1: ( ( 'dataplane' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5562:1: ( 'dataplane' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5562:1: ( 'dataplane' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5563:1: 'dataplane'
+            {
+             before(grammarAccess.getEndNodePerfSpecAccess().getDataplaneKeyword_4_0()); 
+            match(input,43,FollowSets000.FOLLOW_43_in_rule__EndNodePerfSpec__Group_4__0__Impl11343); 
+             after(grammarAccess.getEndNodePerfSpecAccess().getDataplaneKeyword_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group_4__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5576:1: rule__EndNodePerfSpec__Group_4__1 : rule__EndNodePerfSpec__Group_4__1__Impl ;
+    public final void rule__EndNodePerfSpec__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5580:1: ( rule__EndNodePerfSpec__Group_4__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5581:2: rule__EndNodePerfSpec__Group_4__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group_4__1__Impl_in_rule__EndNodePerfSpec__Group_4__111374);
+            rule__EndNodePerfSpec__Group_4__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group_4__1"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group_4__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5587:1: rule__EndNodePerfSpec__Group_4__1__Impl : ( ( rule__EndNodePerfSpec__DataplaneAssignment_4_1 ) ) ;
+    public final void rule__EndNodePerfSpec__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5591:1: ( ( ( rule__EndNodePerfSpec__DataplaneAssignment_4_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5592:1: ( ( rule__EndNodePerfSpec__DataplaneAssignment_4_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5592:1: ( ( rule__EndNodePerfSpec__DataplaneAssignment_4_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5593:1: ( rule__EndNodePerfSpec__DataplaneAssignment_4_1 )
+            {
+             before(grammarAccess.getEndNodePerfSpecAccess().getDataplaneAssignment_4_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5594:1: ( rule__EndNodePerfSpec__DataplaneAssignment_4_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5594:2: rule__EndNodePerfSpec__DataplaneAssignment_4_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__DataplaneAssignment_4_1_in_rule__EndNodePerfSpec__Group_4__1__Impl11401);
+            rule__EndNodePerfSpec__DataplaneAssignment_4_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEndNodePerfSpecAccess().getDataplaneAssignment_4_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group_5__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5608:1: rule__EndNodePerfSpec__Group_5__0 : rule__EndNodePerfSpec__Group_5__0__Impl rule__EndNodePerfSpec__Group_5__1 ;
+    public final void rule__EndNodePerfSpec__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5612:1: ( rule__EndNodePerfSpec__Group_5__0__Impl rule__EndNodePerfSpec__Group_5__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5613:2: rule__EndNodePerfSpec__Group_5__0__Impl rule__EndNodePerfSpec__Group_5__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group_5__0__Impl_in_rule__EndNodePerfSpec__Group_5__011435);
+            rule__EndNodePerfSpec__Group_5__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group_5__1_in_rule__EndNodePerfSpec__Group_5__011438);
+            rule__EndNodePerfSpec__Group_5__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group_5__0"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group_5__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5620:1: rule__EndNodePerfSpec__Group_5__0__Impl : ( 'controlplane' ) ;
+    public final void rule__EndNodePerfSpec__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5624:1: ( ( 'controlplane' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5625:1: ( 'controlplane' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5625:1: ( 'controlplane' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5626:1: 'controlplane'
+            {
+             before(grammarAccess.getEndNodePerfSpecAccess().getControlplaneKeyword_5_0()); 
+            match(input,44,FollowSets000.FOLLOW_44_in_rule__EndNodePerfSpec__Group_5__0__Impl11466); 
+             after(grammarAccess.getEndNodePerfSpecAccess().getControlplaneKeyword_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group_5__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5639:1: rule__EndNodePerfSpec__Group_5__1 : rule__EndNodePerfSpec__Group_5__1__Impl ;
+    public final void rule__EndNodePerfSpec__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5643:1: ( rule__EndNodePerfSpec__Group_5__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5644:2: rule__EndNodePerfSpec__Group_5__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__Group_5__1__Impl_in_rule__EndNodePerfSpec__Group_5__111497);
+            rule__EndNodePerfSpec__Group_5__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group_5__1"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__Group_5__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5650:1: rule__EndNodePerfSpec__Group_5__1__Impl : ( ( rule__EndNodePerfSpec__ControlplaneAssignment_5_1 ) ) ;
+    public final void rule__EndNodePerfSpec__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5654:1: ( ( ( rule__EndNodePerfSpec__ControlplaneAssignment_5_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5655:1: ( ( rule__EndNodePerfSpec__ControlplaneAssignment_5_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5655:1: ( ( rule__EndNodePerfSpec__ControlplaneAssignment_5_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5656:1: ( rule__EndNodePerfSpec__ControlplaneAssignment_5_1 )
+            {
+             before(grammarAccess.getEndNodePerfSpecAccess().getControlplaneAssignment_5_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5657:1: ( rule__EndNodePerfSpec__ControlplaneAssignment_5_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5657:2: rule__EndNodePerfSpec__ControlplaneAssignment_5_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EndNodePerfSpec__ControlplaneAssignment_5_1_in_rule__EndNodePerfSpec__Group_5__1__Impl11524);
+            rule__EndNodePerfSpec__ControlplaneAssignment_5_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEndNodePerfSpecAccess().getControlplaneAssignment_5_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5671:1: rule__NetworkTraffic__Group__0 : rule__NetworkTraffic__Group__0__Impl rule__NetworkTraffic__Group__1 ;
+    public final void rule__NetworkTraffic__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5675:1: ( rule__NetworkTraffic__Group__0__Impl rule__NetworkTraffic__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5676:2: rule__NetworkTraffic__Group__0__Impl rule__NetworkTraffic__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group__0__Impl_in_rule__NetworkTraffic__Group__011558);
+            rule__NetworkTraffic__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group__1_in_rule__NetworkTraffic__Group__011561);
+            rule__NetworkTraffic__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group__0"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5683:1: rule__NetworkTraffic__Group__0__Impl : ( () ) ;
+    public final void rule__NetworkTraffic__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5687:1: ( ( () ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5688:1: ( () )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5688:1: ( () )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5689:1: ()
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getNetworkTrafficAction_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5690:1: ()
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5692:1: 
+            {
+            }
+
+             after(grammarAccess.getNetworkTrafficAccess().getNetworkTrafficAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group__0__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5702:1: rule__NetworkTraffic__Group__1 : rule__NetworkTraffic__Group__1__Impl rule__NetworkTraffic__Group__2 ;
+    public final void rule__NetworkTraffic__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5706:1: ( rule__NetworkTraffic__Group__1__Impl rule__NetworkTraffic__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5707:2: rule__NetworkTraffic__Group__1__Impl rule__NetworkTraffic__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group__1__Impl_in_rule__NetworkTraffic__Group__111619);
+            rule__NetworkTraffic__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group__2_in_rule__NetworkTraffic__Group__111622);
+            rule__NetworkTraffic__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group__1"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5714:1: rule__NetworkTraffic__Group__1__Impl : ( 'NetworkTraffic' ) ;
+    public final void rule__NetworkTraffic__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5718:1: ( ( 'NetworkTraffic' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5719:1: ( 'NetworkTraffic' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5719:1: ( 'NetworkTraffic' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5720:1: 'NetworkTraffic'
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getNetworkTrafficKeyword_1()); 
+            match(input,53,FollowSets000.FOLLOW_53_in_rule__NetworkTraffic__Group__1__Impl11650); 
+             after(grammarAccess.getNetworkTrafficAccess().getNetworkTrafficKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group__1__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5733:1: rule__NetworkTraffic__Group__2 : rule__NetworkTraffic__Group__2__Impl rule__NetworkTraffic__Group__3 ;
+    public final void rule__NetworkTraffic__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5737:1: ( rule__NetworkTraffic__Group__2__Impl rule__NetworkTraffic__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5738:2: rule__NetworkTraffic__Group__2__Impl rule__NetworkTraffic__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group__2__Impl_in_rule__NetworkTraffic__Group__211681);
+            rule__NetworkTraffic__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group__3_in_rule__NetworkTraffic__Group__211684);
+            rule__NetworkTraffic__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group__2"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5745:1: rule__NetworkTraffic__Group__2__Impl : ( '{' ) ;
+    public final void rule__NetworkTraffic__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5749:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5750:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5750:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5751:1: '{'
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__NetworkTraffic__Group__2__Impl11712); 
+             after(grammarAccess.getNetworkTrafficAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group__2__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5764:1: rule__NetworkTraffic__Group__3 : rule__NetworkTraffic__Group__3__Impl rule__NetworkTraffic__Group__4 ;
+    public final void rule__NetworkTraffic__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5768:1: ( rule__NetworkTraffic__Group__3__Impl rule__NetworkTraffic__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5769:2: rule__NetworkTraffic__Group__3__Impl rule__NetworkTraffic__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group__3__Impl_in_rule__NetworkTraffic__Group__311743);
+            rule__NetworkTraffic__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group__4_in_rule__NetworkTraffic__Group__311746);
+            rule__NetworkTraffic__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group__3"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5776:1: rule__NetworkTraffic__Group__3__Impl : ( ( rule__NetworkTraffic__Group_3__0 )? ) ;
+    public final void rule__NetworkTraffic__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5780:1: ( ( ( rule__NetworkTraffic__Group_3__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5781:1: ( ( rule__NetworkTraffic__Group_3__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5781:1: ( ( rule__NetworkTraffic__Group_3__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5782:1: ( rule__NetworkTraffic__Group_3__0 )?
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getGroup_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5783:1: ( rule__NetworkTraffic__Group_3__0 )?
+            int alt23=2;
+            int LA23_0 = input.LA(1);
+
+            if ( (LA23_0==54) ) {
+                alt23=1;
+            }
+            switch (alt23) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5783:2: rule__NetworkTraffic__Group_3__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_3__0_in_rule__NetworkTraffic__Group__3__Impl11773);
+                    rule__NetworkTraffic__Group_3__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getNetworkTrafficAccess().getGroup_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group__3__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5793:1: rule__NetworkTraffic__Group__4 : rule__NetworkTraffic__Group__4__Impl rule__NetworkTraffic__Group__5 ;
+    public final void rule__NetworkTraffic__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5797:1: ( rule__NetworkTraffic__Group__4__Impl rule__NetworkTraffic__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5798:2: rule__NetworkTraffic__Group__4__Impl rule__NetworkTraffic__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group__4__Impl_in_rule__NetworkTraffic__Group__411804);
+            rule__NetworkTraffic__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group__5_in_rule__NetworkTraffic__Group__411807);
+            rule__NetworkTraffic__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group__4"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5805:1: rule__NetworkTraffic__Group__4__Impl : ( ( rule__NetworkTraffic__Group_4__0 )? ) ;
+    public final void rule__NetworkTraffic__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5809:1: ( ( ( rule__NetworkTraffic__Group_4__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5810:1: ( ( rule__NetworkTraffic__Group_4__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5810:1: ( ( rule__NetworkTraffic__Group_4__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5811:1: ( rule__NetworkTraffic__Group_4__0 )?
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getGroup_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5812:1: ( rule__NetworkTraffic__Group_4__0 )?
+            int alt24=2;
+            int LA24_0 = input.LA(1);
+
+            if ( (LA24_0==55) ) {
+                alt24=1;
+            }
+            switch (alt24) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5812:2: rule__NetworkTraffic__Group_4__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_4__0_in_rule__NetworkTraffic__Group__4__Impl11834);
+                    rule__NetworkTraffic__Group_4__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getNetworkTrafficAccess().getGroup_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group__4__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5822:1: rule__NetworkTraffic__Group__5 : rule__NetworkTraffic__Group__5__Impl ;
+    public final void rule__NetworkTraffic__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5826:1: ( rule__NetworkTraffic__Group__5__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5827:2: rule__NetworkTraffic__Group__5__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group__5__Impl_in_rule__NetworkTraffic__Group__511865);
+            rule__NetworkTraffic__Group__5__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group__5"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5833:1: rule__NetworkTraffic__Group__5__Impl : ( '}' ) ;
+    public final void rule__NetworkTraffic__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5837:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5838:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5838:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5839:1: '}'
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getRightCurlyBracketKeyword_5()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__NetworkTraffic__Group__5__Impl11893); 
+             after(grammarAccess.getNetworkTrafficAccess().getRightCurlyBracketKeyword_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group__5__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5864:1: rule__NetworkTraffic__Group_3__0 : rule__NetworkTraffic__Group_3__0__Impl rule__NetworkTraffic__Group_3__1 ;
+    public final void rule__NetworkTraffic__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5868:1: ( rule__NetworkTraffic__Group_3__0__Impl rule__NetworkTraffic__Group_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5869:2: rule__NetworkTraffic__Group_3__0__Impl rule__NetworkTraffic__Group_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_3__0__Impl_in_rule__NetworkTraffic__Group_3__011936);
+            rule__NetworkTraffic__Group_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_3__1_in_rule__NetworkTraffic__Group_3__011939);
+            rule__NetworkTraffic__Group_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_3__0"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5876:1: rule__NetworkTraffic__Group_3__0__Impl : ( 'flows' ) ;
+    public final void rule__NetworkTraffic__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5880:1: ( ( 'flows' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5881:1: ( 'flows' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5881:1: ( 'flows' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5882:1: 'flows'
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getFlowsKeyword_3_0()); 
+            match(input,54,FollowSets000.FOLLOW_54_in_rule__NetworkTraffic__Group_3__0__Impl11967); 
+             after(grammarAccess.getNetworkTrafficAccess().getFlowsKeyword_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5895:1: rule__NetworkTraffic__Group_3__1 : rule__NetworkTraffic__Group_3__1__Impl rule__NetworkTraffic__Group_3__2 ;
+    public final void rule__NetworkTraffic__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5899:1: ( rule__NetworkTraffic__Group_3__1__Impl rule__NetworkTraffic__Group_3__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5900:2: rule__NetworkTraffic__Group_3__1__Impl rule__NetworkTraffic__Group_3__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_3__1__Impl_in_rule__NetworkTraffic__Group_3__111998);
+            rule__NetworkTraffic__Group_3__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_3__2_in_rule__NetworkTraffic__Group_3__112001);
+            rule__NetworkTraffic__Group_3__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_3__1"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5907:1: rule__NetworkTraffic__Group_3__1__Impl : ( '{' ) ;
+    public final void rule__NetworkTraffic__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5911:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5912:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5912:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5913:1: '{'
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getLeftCurlyBracketKeyword_3_1()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__NetworkTraffic__Group_3__1__Impl12029); 
+             after(grammarAccess.getNetworkTrafficAccess().getLeftCurlyBracketKeyword_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_3__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5926:1: rule__NetworkTraffic__Group_3__2 : rule__NetworkTraffic__Group_3__2__Impl rule__NetworkTraffic__Group_3__3 ;
+    public final void rule__NetworkTraffic__Group_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5930:1: ( rule__NetworkTraffic__Group_3__2__Impl rule__NetworkTraffic__Group_3__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5931:2: rule__NetworkTraffic__Group_3__2__Impl rule__NetworkTraffic__Group_3__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_3__2__Impl_in_rule__NetworkTraffic__Group_3__212060);
+            rule__NetworkTraffic__Group_3__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_3__3_in_rule__NetworkTraffic__Group_3__212063);
+            rule__NetworkTraffic__Group_3__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_3__2"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_3__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5938:1: rule__NetworkTraffic__Group_3__2__Impl : ( ( rule__NetworkTraffic__FlowsAssignment_3_2 ) ) ;
+    public final void rule__NetworkTraffic__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5942:1: ( ( ( rule__NetworkTraffic__FlowsAssignment_3_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5943:1: ( ( rule__NetworkTraffic__FlowsAssignment_3_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5943:1: ( ( rule__NetworkTraffic__FlowsAssignment_3_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5944:1: ( rule__NetworkTraffic__FlowsAssignment_3_2 )
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getFlowsAssignment_3_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5945:1: ( rule__NetworkTraffic__FlowsAssignment_3_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5945:2: rule__NetworkTraffic__FlowsAssignment_3_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__FlowsAssignment_3_2_in_rule__NetworkTraffic__Group_3__2__Impl12090);
+            rule__NetworkTraffic__FlowsAssignment_3_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkTrafficAccess().getFlowsAssignment_3_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_3__2__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_3__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5955:1: rule__NetworkTraffic__Group_3__3 : rule__NetworkTraffic__Group_3__3__Impl rule__NetworkTraffic__Group_3__4 ;
+    public final void rule__NetworkTraffic__Group_3__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5959:1: ( rule__NetworkTraffic__Group_3__3__Impl rule__NetworkTraffic__Group_3__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5960:2: rule__NetworkTraffic__Group_3__3__Impl rule__NetworkTraffic__Group_3__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_3__3__Impl_in_rule__NetworkTraffic__Group_3__312120);
+            rule__NetworkTraffic__Group_3__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_3__4_in_rule__NetworkTraffic__Group_3__312123);
+            rule__NetworkTraffic__Group_3__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_3__3"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_3__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5967:1: rule__NetworkTraffic__Group_3__3__Impl : ( ( rule__NetworkTraffic__Group_3_3__0 )* ) ;
+    public final void rule__NetworkTraffic__Group_3__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5971:1: ( ( ( rule__NetworkTraffic__Group_3_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5972:1: ( ( rule__NetworkTraffic__Group_3_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5972:1: ( ( rule__NetworkTraffic__Group_3_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5973:1: ( rule__NetworkTraffic__Group_3_3__0 )*
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getGroup_3_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5974:1: ( rule__NetworkTraffic__Group_3_3__0 )*
+            loop25:
+            do {
+                int alt25=2;
+                int LA25_0 = input.LA(1);
+
+                if ( (LA25_0==31) ) {
+                    alt25=1;
+                }
+
+
+                switch (alt25) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5974:2: rule__NetworkTraffic__Group_3_3__0
+            	    {
+            	    pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_3_3__0_in_rule__NetworkTraffic__Group_3__3__Impl12150);
+            	    rule__NetworkTraffic__Group_3_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop25;
+                }
+            } while (true);
+
+             after(grammarAccess.getNetworkTrafficAccess().getGroup_3_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_3__3__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_3__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5984:1: rule__NetworkTraffic__Group_3__4 : rule__NetworkTraffic__Group_3__4__Impl ;
+    public final void rule__NetworkTraffic__Group_3__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5988:1: ( rule__NetworkTraffic__Group_3__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5989:2: rule__NetworkTraffic__Group_3__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_3__4__Impl_in_rule__NetworkTraffic__Group_3__412181);
+            rule__NetworkTraffic__Group_3__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_3__4"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_3__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5995:1: rule__NetworkTraffic__Group_3__4__Impl : ( '}' ) ;
+    public final void rule__NetworkTraffic__Group_3__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:5999:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6000:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6000:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6001:1: '}'
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getRightCurlyBracketKeyword_3_4()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__NetworkTraffic__Group_3__4__Impl12209); 
+             after(grammarAccess.getNetworkTrafficAccess().getRightCurlyBracketKeyword_3_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_3__4__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_3_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6024:1: rule__NetworkTraffic__Group_3_3__0 : rule__NetworkTraffic__Group_3_3__0__Impl rule__NetworkTraffic__Group_3_3__1 ;
+    public final void rule__NetworkTraffic__Group_3_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6028:1: ( rule__NetworkTraffic__Group_3_3__0__Impl rule__NetworkTraffic__Group_3_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6029:2: rule__NetworkTraffic__Group_3_3__0__Impl rule__NetworkTraffic__Group_3_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_3_3__0__Impl_in_rule__NetworkTraffic__Group_3_3__012250);
+            rule__NetworkTraffic__Group_3_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_3_3__1_in_rule__NetworkTraffic__Group_3_3__012253);
+            rule__NetworkTraffic__Group_3_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_3_3__0"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_3_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6036:1: rule__NetworkTraffic__Group_3_3__0__Impl : ( ',' ) ;
+    public final void rule__NetworkTraffic__Group_3_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6040:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6041:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6041:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6042:1: ','
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getCommaKeyword_3_3_0()); 
+            match(input,31,FollowSets000.FOLLOW_31_in_rule__NetworkTraffic__Group_3_3__0__Impl12281); 
+             after(grammarAccess.getNetworkTrafficAccess().getCommaKeyword_3_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_3_3__0__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_3_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6055:1: rule__NetworkTraffic__Group_3_3__1 : rule__NetworkTraffic__Group_3_3__1__Impl ;
+    public final void rule__NetworkTraffic__Group_3_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6059:1: ( rule__NetworkTraffic__Group_3_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6060:2: rule__NetworkTraffic__Group_3_3__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_3_3__1__Impl_in_rule__NetworkTraffic__Group_3_3__112312);
+            rule__NetworkTraffic__Group_3_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_3_3__1"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_3_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6066:1: rule__NetworkTraffic__Group_3_3__1__Impl : ( ( rule__NetworkTraffic__FlowsAssignment_3_3_1 ) ) ;
+    public final void rule__NetworkTraffic__Group_3_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6070:1: ( ( ( rule__NetworkTraffic__FlowsAssignment_3_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6071:1: ( ( rule__NetworkTraffic__FlowsAssignment_3_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6071:1: ( ( rule__NetworkTraffic__FlowsAssignment_3_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6072:1: ( rule__NetworkTraffic__FlowsAssignment_3_3_1 )
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getFlowsAssignment_3_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6073:1: ( rule__NetworkTraffic__FlowsAssignment_3_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6073:2: rule__NetworkTraffic__FlowsAssignment_3_3_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__FlowsAssignment_3_3_1_in_rule__NetworkTraffic__Group_3_3__1__Impl12339);
+            rule__NetworkTraffic__FlowsAssignment_3_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkTrafficAccess().getFlowsAssignment_3_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_3_3__1__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_4__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6087:1: rule__NetworkTraffic__Group_4__0 : rule__NetworkTraffic__Group_4__0__Impl rule__NetworkTraffic__Group_4__1 ;
+    public final void rule__NetworkTraffic__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6091:1: ( rule__NetworkTraffic__Group_4__0__Impl rule__NetworkTraffic__Group_4__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6092:2: rule__NetworkTraffic__Group_4__0__Impl rule__NetworkTraffic__Group_4__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_4__0__Impl_in_rule__NetworkTraffic__Group_4__012373);
+            rule__NetworkTraffic__Group_4__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_4__1_in_rule__NetworkTraffic__Group_4__012376);
+            rule__NetworkTraffic__Group_4__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_4__0"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_4__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6099:1: rule__NetworkTraffic__Group_4__0__Impl : ( 'software' ) ;
+    public final void rule__NetworkTraffic__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6103:1: ( ( 'software' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6104:1: ( 'software' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6104:1: ( 'software' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6105:1: 'software'
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getSoftwareKeyword_4_0()); 
+            match(input,55,FollowSets000.FOLLOW_55_in_rule__NetworkTraffic__Group_4__0__Impl12404); 
+             after(grammarAccess.getNetworkTrafficAccess().getSoftwareKeyword_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_4__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6118:1: rule__NetworkTraffic__Group_4__1 : rule__NetworkTraffic__Group_4__1__Impl rule__NetworkTraffic__Group_4__2 ;
+    public final void rule__NetworkTraffic__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6122:1: ( rule__NetworkTraffic__Group_4__1__Impl rule__NetworkTraffic__Group_4__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6123:2: rule__NetworkTraffic__Group_4__1__Impl rule__NetworkTraffic__Group_4__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_4__1__Impl_in_rule__NetworkTraffic__Group_4__112435);
+            rule__NetworkTraffic__Group_4__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_4__2_in_rule__NetworkTraffic__Group_4__112438);
+            rule__NetworkTraffic__Group_4__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_4__1"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_4__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6130:1: rule__NetworkTraffic__Group_4__1__Impl : ( '{' ) ;
+    public final void rule__NetworkTraffic__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6134:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6135:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6135:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6136:1: '{'
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getLeftCurlyBracketKeyword_4_1()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__NetworkTraffic__Group_4__1__Impl12466); 
+             after(grammarAccess.getNetworkTrafficAccess().getLeftCurlyBracketKeyword_4_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_4__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6149:1: rule__NetworkTraffic__Group_4__2 : rule__NetworkTraffic__Group_4__2__Impl rule__NetworkTraffic__Group_4__3 ;
+    public final void rule__NetworkTraffic__Group_4__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6153:1: ( rule__NetworkTraffic__Group_4__2__Impl rule__NetworkTraffic__Group_4__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6154:2: rule__NetworkTraffic__Group_4__2__Impl rule__NetworkTraffic__Group_4__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_4__2__Impl_in_rule__NetworkTraffic__Group_4__212497);
+            rule__NetworkTraffic__Group_4__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_4__3_in_rule__NetworkTraffic__Group_4__212500);
+            rule__NetworkTraffic__Group_4__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_4__2"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_4__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6161:1: rule__NetworkTraffic__Group_4__2__Impl : ( ( rule__NetworkTraffic__SoftwareAssignment_4_2 ) ) ;
+    public final void rule__NetworkTraffic__Group_4__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6165:1: ( ( ( rule__NetworkTraffic__SoftwareAssignment_4_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6166:1: ( ( rule__NetworkTraffic__SoftwareAssignment_4_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6166:1: ( ( rule__NetworkTraffic__SoftwareAssignment_4_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6167:1: ( rule__NetworkTraffic__SoftwareAssignment_4_2 )
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getSoftwareAssignment_4_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6168:1: ( rule__NetworkTraffic__SoftwareAssignment_4_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6168:2: rule__NetworkTraffic__SoftwareAssignment_4_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__SoftwareAssignment_4_2_in_rule__NetworkTraffic__Group_4__2__Impl12527);
+            rule__NetworkTraffic__SoftwareAssignment_4_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkTrafficAccess().getSoftwareAssignment_4_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_4__2__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_4__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6178:1: rule__NetworkTraffic__Group_4__3 : rule__NetworkTraffic__Group_4__3__Impl rule__NetworkTraffic__Group_4__4 ;
+    public final void rule__NetworkTraffic__Group_4__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6182:1: ( rule__NetworkTraffic__Group_4__3__Impl rule__NetworkTraffic__Group_4__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6183:2: rule__NetworkTraffic__Group_4__3__Impl rule__NetworkTraffic__Group_4__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_4__3__Impl_in_rule__NetworkTraffic__Group_4__312557);
+            rule__NetworkTraffic__Group_4__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_4__4_in_rule__NetworkTraffic__Group_4__312560);
+            rule__NetworkTraffic__Group_4__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_4__3"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_4__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6190:1: rule__NetworkTraffic__Group_4__3__Impl : ( ( rule__NetworkTraffic__Group_4_3__0 )* ) ;
+    public final void rule__NetworkTraffic__Group_4__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6194:1: ( ( ( rule__NetworkTraffic__Group_4_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6195:1: ( ( rule__NetworkTraffic__Group_4_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6195:1: ( ( rule__NetworkTraffic__Group_4_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6196:1: ( rule__NetworkTraffic__Group_4_3__0 )*
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getGroup_4_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6197:1: ( rule__NetworkTraffic__Group_4_3__0 )*
+            loop26:
+            do {
+                int alt26=2;
+                int LA26_0 = input.LA(1);
+
+                if ( (LA26_0==31) ) {
+                    alt26=1;
+                }
+
+
+                switch (alt26) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6197:2: rule__NetworkTraffic__Group_4_3__0
+            	    {
+            	    pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_4_3__0_in_rule__NetworkTraffic__Group_4__3__Impl12587);
+            	    rule__NetworkTraffic__Group_4_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop26;
+                }
+            } while (true);
+
+             after(grammarAccess.getNetworkTrafficAccess().getGroup_4_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_4__3__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_4__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6207:1: rule__NetworkTraffic__Group_4__4 : rule__NetworkTraffic__Group_4__4__Impl ;
+    public final void rule__NetworkTraffic__Group_4__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6211:1: ( rule__NetworkTraffic__Group_4__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6212:2: rule__NetworkTraffic__Group_4__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_4__4__Impl_in_rule__NetworkTraffic__Group_4__412618);
+            rule__NetworkTraffic__Group_4__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_4__4"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_4__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6218:1: rule__NetworkTraffic__Group_4__4__Impl : ( '}' ) ;
+    public final void rule__NetworkTraffic__Group_4__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6222:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6223:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6223:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6224:1: '}'
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getRightCurlyBracketKeyword_4_4()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__NetworkTraffic__Group_4__4__Impl12646); 
+             after(grammarAccess.getNetworkTrafficAccess().getRightCurlyBracketKeyword_4_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_4__4__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_4_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6247:1: rule__NetworkTraffic__Group_4_3__0 : rule__NetworkTraffic__Group_4_3__0__Impl rule__NetworkTraffic__Group_4_3__1 ;
+    public final void rule__NetworkTraffic__Group_4_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6251:1: ( rule__NetworkTraffic__Group_4_3__0__Impl rule__NetworkTraffic__Group_4_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6252:2: rule__NetworkTraffic__Group_4_3__0__Impl rule__NetworkTraffic__Group_4_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_4_3__0__Impl_in_rule__NetworkTraffic__Group_4_3__012687);
+            rule__NetworkTraffic__Group_4_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_4_3__1_in_rule__NetworkTraffic__Group_4_3__012690);
+            rule__NetworkTraffic__Group_4_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_4_3__0"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_4_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6259:1: rule__NetworkTraffic__Group_4_3__0__Impl : ( ',' ) ;
+    public final void rule__NetworkTraffic__Group_4_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6263:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6264:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6264:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6265:1: ','
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getCommaKeyword_4_3_0()); 
+            match(input,31,FollowSets000.FOLLOW_31_in_rule__NetworkTraffic__Group_4_3__0__Impl12718); 
+             after(grammarAccess.getNetworkTrafficAccess().getCommaKeyword_4_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_4_3__0__Impl"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_4_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6278:1: rule__NetworkTraffic__Group_4_3__1 : rule__NetworkTraffic__Group_4_3__1__Impl ;
+    public final void rule__NetworkTraffic__Group_4_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6282:1: ( rule__NetworkTraffic__Group_4_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6283:2: rule__NetworkTraffic__Group_4_3__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__Group_4_3__1__Impl_in_rule__NetworkTraffic__Group_4_3__112749);
+            rule__NetworkTraffic__Group_4_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_4_3__1"
+
+
+    // $ANTLR start "rule__NetworkTraffic__Group_4_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6289:1: rule__NetworkTraffic__Group_4_3__1__Impl : ( ( rule__NetworkTraffic__SoftwareAssignment_4_3_1 ) ) ;
+    public final void rule__NetworkTraffic__Group_4_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6293:1: ( ( ( rule__NetworkTraffic__SoftwareAssignment_4_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6294:1: ( ( rule__NetworkTraffic__SoftwareAssignment_4_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6294:1: ( ( rule__NetworkTraffic__SoftwareAssignment_4_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6295:1: ( rule__NetworkTraffic__SoftwareAssignment_4_3_1 )
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getSoftwareAssignment_4_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6296:1: ( rule__NetworkTraffic__SoftwareAssignment_4_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6296:2: rule__NetworkTraffic__SoftwareAssignment_4_3_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkTraffic__SoftwareAssignment_4_3_1_in_rule__NetworkTraffic__Group_4_3__1__Impl12776);
+            rule__NetworkTraffic__SoftwareAssignment_4_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkTrafficAccess().getSoftwareAssignment_4_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__Group_4_3__1__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6310:1: rule__NetworkStructure__Group__0 : rule__NetworkStructure__Group__0__Impl rule__NetworkStructure__Group__1 ;
+    public final void rule__NetworkStructure__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6314:1: ( rule__NetworkStructure__Group__0__Impl rule__NetworkStructure__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6315:2: rule__NetworkStructure__Group__0__Impl rule__NetworkStructure__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group__0__Impl_in_rule__NetworkStructure__Group__012810);
+            rule__NetworkStructure__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group__1_in_rule__NetworkStructure__Group__012813);
+            rule__NetworkStructure__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group__0"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6322:1: rule__NetworkStructure__Group__0__Impl : ( () ) ;
+    public final void rule__NetworkStructure__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6326:1: ( ( () ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6327:1: ( () )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6327:1: ( () )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6328:1: ()
+            {
+             before(grammarAccess.getNetworkStructureAccess().getNetworkStructureAction_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6329:1: ()
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6331:1: 
+            {
+            }
+
+             after(grammarAccess.getNetworkStructureAccess().getNetworkStructureAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group__0__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6341:1: rule__NetworkStructure__Group__1 : rule__NetworkStructure__Group__1__Impl rule__NetworkStructure__Group__2 ;
+    public final void rule__NetworkStructure__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6345:1: ( rule__NetworkStructure__Group__1__Impl rule__NetworkStructure__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6346:2: rule__NetworkStructure__Group__1__Impl rule__NetworkStructure__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group__1__Impl_in_rule__NetworkStructure__Group__112871);
+            rule__NetworkStructure__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group__2_in_rule__NetworkStructure__Group__112874);
+            rule__NetworkStructure__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group__1"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6353:1: rule__NetworkStructure__Group__1__Impl : ( 'NetworkStructure' ) ;
+    public final void rule__NetworkStructure__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6357:1: ( ( 'NetworkStructure' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6358:1: ( 'NetworkStructure' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6358:1: ( 'NetworkStructure' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6359:1: 'NetworkStructure'
+            {
+             before(grammarAccess.getNetworkStructureAccess().getNetworkStructureKeyword_1()); 
+            match(input,56,FollowSets000.FOLLOW_56_in_rule__NetworkStructure__Group__1__Impl12902); 
+             after(grammarAccess.getNetworkStructureAccess().getNetworkStructureKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group__1__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6372:1: rule__NetworkStructure__Group__2 : rule__NetworkStructure__Group__2__Impl rule__NetworkStructure__Group__3 ;
+    public final void rule__NetworkStructure__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6376:1: ( rule__NetworkStructure__Group__2__Impl rule__NetworkStructure__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6377:2: rule__NetworkStructure__Group__2__Impl rule__NetworkStructure__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group__2__Impl_in_rule__NetworkStructure__Group__212933);
+            rule__NetworkStructure__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group__3_in_rule__NetworkStructure__Group__212936);
+            rule__NetworkStructure__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group__2"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6384:1: rule__NetworkStructure__Group__2__Impl : ( '{' ) ;
+    public final void rule__NetworkStructure__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6388:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6389:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6389:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6390:1: '{'
+            {
+             before(grammarAccess.getNetworkStructureAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__NetworkStructure__Group__2__Impl12964); 
+             after(grammarAccess.getNetworkStructureAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group__2__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6403:1: rule__NetworkStructure__Group__3 : rule__NetworkStructure__Group__3__Impl rule__NetworkStructure__Group__4 ;
+    public final void rule__NetworkStructure__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6407:1: ( rule__NetworkStructure__Group__3__Impl rule__NetworkStructure__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6408:2: rule__NetworkStructure__Group__3__Impl rule__NetworkStructure__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group__3__Impl_in_rule__NetworkStructure__Group__312995);
+            rule__NetworkStructure__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group__4_in_rule__NetworkStructure__Group__312998);
+            rule__NetworkStructure__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group__3"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6415:1: rule__NetworkStructure__Group__3__Impl : ( ( rule__NetworkStructure__Group_3__0 )? ) ;
+    public final void rule__NetworkStructure__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6419:1: ( ( ( rule__NetworkStructure__Group_3__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6420:1: ( ( rule__NetworkStructure__Group_3__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6420:1: ( ( rule__NetworkStructure__Group_3__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6421:1: ( rule__NetworkStructure__Group_3__0 )?
+            {
+             before(grammarAccess.getNetworkStructureAccess().getGroup_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6422:1: ( rule__NetworkStructure__Group_3__0 )?
+            int alt27=2;
+            int LA27_0 = input.LA(1);
+
+            if ( (LA27_0==57) ) {
+                alt27=1;
+            }
+            switch (alt27) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6422:2: rule__NetworkStructure__Group_3__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_3__0_in_rule__NetworkStructure__Group__3__Impl13025);
+                    rule__NetworkStructure__Group_3__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getNetworkStructureAccess().getGroup_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group__3__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6432:1: rule__NetworkStructure__Group__4 : rule__NetworkStructure__Group__4__Impl rule__NetworkStructure__Group__5 ;
+    public final void rule__NetworkStructure__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6436:1: ( rule__NetworkStructure__Group__4__Impl rule__NetworkStructure__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6437:2: rule__NetworkStructure__Group__4__Impl rule__NetworkStructure__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group__4__Impl_in_rule__NetworkStructure__Group__413056);
+            rule__NetworkStructure__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group__5_in_rule__NetworkStructure__Group__413059);
+            rule__NetworkStructure__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group__4"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6444:1: rule__NetworkStructure__Group__4__Impl : ( ( rule__NetworkStructure__Group_4__0 )? ) ;
+    public final void rule__NetworkStructure__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6448:1: ( ( ( rule__NetworkStructure__Group_4__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6449:1: ( ( rule__NetworkStructure__Group_4__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6449:1: ( ( rule__NetworkStructure__Group_4__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6450:1: ( rule__NetworkStructure__Group_4__0 )?
+            {
+             before(grammarAccess.getNetworkStructureAccess().getGroup_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6451:1: ( rule__NetworkStructure__Group_4__0 )?
+            int alt28=2;
+            int LA28_0 = input.LA(1);
+
+            if ( (LA28_0==58) ) {
+                alt28=1;
+            }
+            switch (alt28) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6451:2: rule__NetworkStructure__Group_4__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_4__0_in_rule__NetworkStructure__Group__4__Impl13086);
+                    rule__NetworkStructure__Group_4__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getNetworkStructureAccess().getGroup_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group__4__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6461:1: rule__NetworkStructure__Group__5 : rule__NetworkStructure__Group__5__Impl ;
+    public final void rule__NetworkStructure__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6465:1: ( rule__NetworkStructure__Group__5__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6466:2: rule__NetworkStructure__Group__5__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group__5__Impl_in_rule__NetworkStructure__Group__513117);
+            rule__NetworkStructure__Group__5__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group__5"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6472:1: rule__NetworkStructure__Group__5__Impl : ( '}' ) ;
+    public final void rule__NetworkStructure__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6476:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6477:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6477:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6478:1: '}'
+            {
+             before(grammarAccess.getNetworkStructureAccess().getRightCurlyBracketKeyword_5()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__NetworkStructure__Group__5__Impl13145); 
+             after(grammarAccess.getNetworkStructureAccess().getRightCurlyBracketKeyword_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group__5__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6503:1: rule__NetworkStructure__Group_3__0 : rule__NetworkStructure__Group_3__0__Impl rule__NetworkStructure__Group_3__1 ;
+    public final void rule__NetworkStructure__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6507:1: ( rule__NetworkStructure__Group_3__0__Impl rule__NetworkStructure__Group_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6508:2: rule__NetworkStructure__Group_3__0__Impl rule__NetworkStructure__Group_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_3__0__Impl_in_rule__NetworkStructure__Group_3__013188);
+            rule__NetworkStructure__Group_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_3__1_in_rule__NetworkStructure__Group_3__013191);
+            rule__NetworkStructure__Group_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_3__0"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6515:1: rule__NetworkStructure__Group_3__0__Impl : ( 'nodes' ) ;
+    public final void rule__NetworkStructure__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6519:1: ( ( 'nodes' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6520:1: ( 'nodes' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6520:1: ( 'nodes' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6521:1: 'nodes'
+            {
+             before(grammarAccess.getNetworkStructureAccess().getNodesKeyword_3_0()); 
+            match(input,57,FollowSets000.FOLLOW_57_in_rule__NetworkStructure__Group_3__0__Impl13219); 
+             after(grammarAccess.getNetworkStructureAccess().getNodesKeyword_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6534:1: rule__NetworkStructure__Group_3__1 : rule__NetworkStructure__Group_3__1__Impl rule__NetworkStructure__Group_3__2 ;
+    public final void rule__NetworkStructure__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6538:1: ( rule__NetworkStructure__Group_3__1__Impl rule__NetworkStructure__Group_3__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6539:2: rule__NetworkStructure__Group_3__1__Impl rule__NetworkStructure__Group_3__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_3__1__Impl_in_rule__NetworkStructure__Group_3__113250);
+            rule__NetworkStructure__Group_3__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_3__2_in_rule__NetworkStructure__Group_3__113253);
+            rule__NetworkStructure__Group_3__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_3__1"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6546:1: rule__NetworkStructure__Group_3__1__Impl : ( '{' ) ;
+    public final void rule__NetworkStructure__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6550:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6551:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6551:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6552:1: '{'
+            {
+             before(grammarAccess.getNetworkStructureAccess().getLeftCurlyBracketKeyword_3_1()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__NetworkStructure__Group_3__1__Impl13281); 
+             after(grammarAccess.getNetworkStructureAccess().getLeftCurlyBracketKeyword_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_3__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6565:1: rule__NetworkStructure__Group_3__2 : rule__NetworkStructure__Group_3__2__Impl rule__NetworkStructure__Group_3__3 ;
+    public final void rule__NetworkStructure__Group_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6569:1: ( rule__NetworkStructure__Group_3__2__Impl rule__NetworkStructure__Group_3__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6570:2: rule__NetworkStructure__Group_3__2__Impl rule__NetworkStructure__Group_3__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_3__2__Impl_in_rule__NetworkStructure__Group_3__213312);
+            rule__NetworkStructure__Group_3__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_3__3_in_rule__NetworkStructure__Group_3__213315);
+            rule__NetworkStructure__Group_3__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_3__2"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_3__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6577:1: rule__NetworkStructure__Group_3__2__Impl : ( ( rule__NetworkStructure__NodesAssignment_3_2 ) ) ;
+    public final void rule__NetworkStructure__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6581:1: ( ( ( rule__NetworkStructure__NodesAssignment_3_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6582:1: ( ( rule__NetworkStructure__NodesAssignment_3_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6582:1: ( ( rule__NetworkStructure__NodesAssignment_3_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6583:1: ( rule__NetworkStructure__NodesAssignment_3_2 )
+            {
+             before(grammarAccess.getNetworkStructureAccess().getNodesAssignment_3_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6584:1: ( rule__NetworkStructure__NodesAssignment_3_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6584:2: rule__NetworkStructure__NodesAssignment_3_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__NodesAssignment_3_2_in_rule__NetworkStructure__Group_3__2__Impl13342);
+            rule__NetworkStructure__NodesAssignment_3_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkStructureAccess().getNodesAssignment_3_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_3__2__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_3__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6594:1: rule__NetworkStructure__Group_3__3 : rule__NetworkStructure__Group_3__3__Impl rule__NetworkStructure__Group_3__4 ;
+    public final void rule__NetworkStructure__Group_3__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6598:1: ( rule__NetworkStructure__Group_3__3__Impl rule__NetworkStructure__Group_3__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6599:2: rule__NetworkStructure__Group_3__3__Impl rule__NetworkStructure__Group_3__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_3__3__Impl_in_rule__NetworkStructure__Group_3__313372);
+            rule__NetworkStructure__Group_3__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_3__4_in_rule__NetworkStructure__Group_3__313375);
+            rule__NetworkStructure__Group_3__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_3__3"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_3__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6606:1: rule__NetworkStructure__Group_3__3__Impl : ( ( rule__NetworkStructure__Group_3_3__0 )* ) ;
+    public final void rule__NetworkStructure__Group_3__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6610:1: ( ( ( rule__NetworkStructure__Group_3_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6611:1: ( ( rule__NetworkStructure__Group_3_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6611:1: ( ( rule__NetworkStructure__Group_3_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6612:1: ( rule__NetworkStructure__Group_3_3__0 )*
+            {
+             before(grammarAccess.getNetworkStructureAccess().getGroup_3_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6613:1: ( rule__NetworkStructure__Group_3_3__0 )*
+            loop29:
+            do {
+                int alt29=2;
+                int LA29_0 = input.LA(1);
+
+                if ( (LA29_0==31) ) {
+                    alt29=1;
+                }
+
+
+                switch (alt29) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6613:2: rule__NetworkStructure__Group_3_3__0
+            	    {
+            	    pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_3_3__0_in_rule__NetworkStructure__Group_3__3__Impl13402);
+            	    rule__NetworkStructure__Group_3_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop29;
+                }
+            } while (true);
+
+             after(grammarAccess.getNetworkStructureAccess().getGroup_3_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_3__3__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_3__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6623:1: rule__NetworkStructure__Group_3__4 : rule__NetworkStructure__Group_3__4__Impl ;
+    public final void rule__NetworkStructure__Group_3__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6627:1: ( rule__NetworkStructure__Group_3__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6628:2: rule__NetworkStructure__Group_3__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_3__4__Impl_in_rule__NetworkStructure__Group_3__413433);
+            rule__NetworkStructure__Group_3__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_3__4"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_3__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6634:1: rule__NetworkStructure__Group_3__4__Impl : ( '}' ) ;
+    public final void rule__NetworkStructure__Group_3__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6638:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6639:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6639:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6640:1: '}'
+            {
+             before(grammarAccess.getNetworkStructureAccess().getRightCurlyBracketKeyword_3_4()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__NetworkStructure__Group_3__4__Impl13461); 
+             after(grammarAccess.getNetworkStructureAccess().getRightCurlyBracketKeyword_3_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_3__4__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_3_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6663:1: rule__NetworkStructure__Group_3_3__0 : rule__NetworkStructure__Group_3_3__0__Impl rule__NetworkStructure__Group_3_3__1 ;
+    public final void rule__NetworkStructure__Group_3_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6667:1: ( rule__NetworkStructure__Group_3_3__0__Impl rule__NetworkStructure__Group_3_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6668:2: rule__NetworkStructure__Group_3_3__0__Impl rule__NetworkStructure__Group_3_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_3_3__0__Impl_in_rule__NetworkStructure__Group_3_3__013502);
+            rule__NetworkStructure__Group_3_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_3_3__1_in_rule__NetworkStructure__Group_3_3__013505);
+            rule__NetworkStructure__Group_3_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_3_3__0"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_3_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6675:1: rule__NetworkStructure__Group_3_3__0__Impl : ( ',' ) ;
+    public final void rule__NetworkStructure__Group_3_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6679:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6680:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6680:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6681:1: ','
+            {
+             before(grammarAccess.getNetworkStructureAccess().getCommaKeyword_3_3_0()); 
+            match(input,31,FollowSets000.FOLLOW_31_in_rule__NetworkStructure__Group_3_3__0__Impl13533); 
+             after(grammarAccess.getNetworkStructureAccess().getCommaKeyword_3_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_3_3__0__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_3_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6694:1: rule__NetworkStructure__Group_3_3__1 : rule__NetworkStructure__Group_3_3__1__Impl ;
+    public final void rule__NetworkStructure__Group_3_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6698:1: ( rule__NetworkStructure__Group_3_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6699:2: rule__NetworkStructure__Group_3_3__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_3_3__1__Impl_in_rule__NetworkStructure__Group_3_3__113564);
+            rule__NetworkStructure__Group_3_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_3_3__1"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_3_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6705:1: rule__NetworkStructure__Group_3_3__1__Impl : ( ( rule__NetworkStructure__NodesAssignment_3_3_1 ) ) ;
+    public final void rule__NetworkStructure__Group_3_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6709:1: ( ( ( rule__NetworkStructure__NodesAssignment_3_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6710:1: ( ( rule__NetworkStructure__NodesAssignment_3_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6710:1: ( ( rule__NetworkStructure__NodesAssignment_3_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6711:1: ( rule__NetworkStructure__NodesAssignment_3_3_1 )
+            {
+             before(grammarAccess.getNetworkStructureAccess().getNodesAssignment_3_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6712:1: ( rule__NetworkStructure__NodesAssignment_3_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6712:2: rule__NetworkStructure__NodesAssignment_3_3_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__NodesAssignment_3_3_1_in_rule__NetworkStructure__Group_3_3__1__Impl13591);
+            rule__NetworkStructure__NodesAssignment_3_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkStructureAccess().getNodesAssignment_3_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_3_3__1__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_4__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6726:1: rule__NetworkStructure__Group_4__0 : rule__NetworkStructure__Group_4__0__Impl rule__NetworkStructure__Group_4__1 ;
+    public final void rule__NetworkStructure__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6730:1: ( rule__NetworkStructure__Group_4__0__Impl rule__NetworkStructure__Group_4__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6731:2: rule__NetworkStructure__Group_4__0__Impl rule__NetworkStructure__Group_4__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_4__0__Impl_in_rule__NetworkStructure__Group_4__013625);
+            rule__NetworkStructure__Group_4__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_4__1_in_rule__NetworkStructure__Group_4__013628);
+            rule__NetworkStructure__Group_4__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_4__0"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_4__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6738:1: rule__NetworkStructure__Group_4__0__Impl : ( 'links' ) ;
+    public final void rule__NetworkStructure__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6742:1: ( ( 'links' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6743:1: ( 'links' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6743:1: ( 'links' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6744:1: 'links'
+            {
+             before(grammarAccess.getNetworkStructureAccess().getLinksKeyword_4_0()); 
+            match(input,58,FollowSets000.FOLLOW_58_in_rule__NetworkStructure__Group_4__0__Impl13656); 
+             after(grammarAccess.getNetworkStructureAccess().getLinksKeyword_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_4__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6757:1: rule__NetworkStructure__Group_4__1 : rule__NetworkStructure__Group_4__1__Impl rule__NetworkStructure__Group_4__2 ;
+    public final void rule__NetworkStructure__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6761:1: ( rule__NetworkStructure__Group_4__1__Impl rule__NetworkStructure__Group_4__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6762:2: rule__NetworkStructure__Group_4__1__Impl rule__NetworkStructure__Group_4__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_4__1__Impl_in_rule__NetworkStructure__Group_4__113687);
+            rule__NetworkStructure__Group_4__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_4__2_in_rule__NetworkStructure__Group_4__113690);
+            rule__NetworkStructure__Group_4__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_4__1"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_4__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6769:1: rule__NetworkStructure__Group_4__1__Impl : ( '{' ) ;
+    public final void rule__NetworkStructure__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6773:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6774:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6774:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6775:1: '{'
+            {
+             before(grammarAccess.getNetworkStructureAccess().getLeftCurlyBracketKeyword_4_1()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__NetworkStructure__Group_4__1__Impl13718); 
+             after(grammarAccess.getNetworkStructureAccess().getLeftCurlyBracketKeyword_4_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_4__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6788:1: rule__NetworkStructure__Group_4__2 : rule__NetworkStructure__Group_4__2__Impl rule__NetworkStructure__Group_4__3 ;
+    public final void rule__NetworkStructure__Group_4__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6792:1: ( rule__NetworkStructure__Group_4__2__Impl rule__NetworkStructure__Group_4__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6793:2: rule__NetworkStructure__Group_4__2__Impl rule__NetworkStructure__Group_4__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_4__2__Impl_in_rule__NetworkStructure__Group_4__213749);
+            rule__NetworkStructure__Group_4__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_4__3_in_rule__NetworkStructure__Group_4__213752);
+            rule__NetworkStructure__Group_4__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_4__2"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_4__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6800:1: rule__NetworkStructure__Group_4__2__Impl : ( ( rule__NetworkStructure__LinksAssignment_4_2 ) ) ;
+    public final void rule__NetworkStructure__Group_4__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6804:1: ( ( ( rule__NetworkStructure__LinksAssignment_4_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6805:1: ( ( rule__NetworkStructure__LinksAssignment_4_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6805:1: ( ( rule__NetworkStructure__LinksAssignment_4_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6806:1: ( rule__NetworkStructure__LinksAssignment_4_2 )
+            {
+             before(grammarAccess.getNetworkStructureAccess().getLinksAssignment_4_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6807:1: ( rule__NetworkStructure__LinksAssignment_4_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6807:2: rule__NetworkStructure__LinksAssignment_4_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__LinksAssignment_4_2_in_rule__NetworkStructure__Group_4__2__Impl13779);
+            rule__NetworkStructure__LinksAssignment_4_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkStructureAccess().getLinksAssignment_4_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_4__2__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_4__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6817:1: rule__NetworkStructure__Group_4__3 : rule__NetworkStructure__Group_4__3__Impl rule__NetworkStructure__Group_4__4 ;
+    public final void rule__NetworkStructure__Group_4__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6821:1: ( rule__NetworkStructure__Group_4__3__Impl rule__NetworkStructure__Group_4__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6822:2: rule__NetworkStructure__Group_4__3__Impl rule__NetworkStructure__Group_4__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_4__3__Impl_in_rule__NetworkStructure__Group_4__313809);
+            rule__NetworkStructure__Group_4__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_4__4_in_rule__NetworkStructure__Group_4__313812);
+            rule__NetworkStructure__Group_4__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_4__3"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_4__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6829:1: rule__NetworkStructure__Group_4__3__Impl : ( ( rule__NetworkStructure__Group_4_3__0 )* ) ;
+    public final void rule__NetworkStructure__Group_4__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6833:1: ( ( ( rule__NetworkStructure__Group_4_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6834:1: ( ( rule__NetworkStructure__Group_4_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6834:1: ( ( rule__NetworkStructure__Group_4_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6835:1: ( rule__NetworkStructure__Group_4_3__0 )*
+            {
+             before(grammarAccess.getNetworkStructureAccess().getGroup_4_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6836:1: ( rule__NetworkStructure__Group_4_3__0 )*
+            loop30:
+            do {
+                int alt30=2;
+                int LA30_0 = input.LA(1);
+
+                if ( (LA30_0==31) ) {
+                    alt30=1;
+                }
+
+
+                switch (alt30) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6836:2: rule__NetworkStructure__Group_4_3__0
+            	    {
+            	    pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_4_3__0_in_rule__NetworkStructure__Group_4__3__Impl13839);
+            	    rule__NetworkStructure__Group_4_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop30;
+                }
+            } while (true);
+
+             after(grammarAccess.getNetworkStructureAccess().getGroup_4_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_4__3__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_4__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6846:1: rule__NetworkStructure__Group_4__4 : rule__NetworkStructure__Group_4__4__Impl ;
+    public final void rule__NetworkStructure__Group_4__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6850:1: ( rule__NetworkStructure__Group_4__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6851:2: rule__NetworkStructure__Group_4__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_4__4__Impl_in_rule__NetworkStructure__Group_4__413870);
+            rule__NetworkStructure__Group_4__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_4__4"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_4__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6857:1: rule__NetworkStructure__Group_4__4__Impl : ( '}' ) ;
+    public final void rule__NetworkStructure__Group_4__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6861:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6862:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6862:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6863:1: '}'
+            {
+             before(grammarAccess.getNetworkStructureAccess().getRightCurlyBracketKeyword_4_4()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__NetworkStructure__Group_4__4__Impl13898); 
+             after(grammarAccess.getNetworkStructureAccess().getRightCurlyBracketKeyword_4_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_4__4__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_4_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6886:1: rule__NetworkStructure__Group_4_3__0 : rule__NetworkStructure__Group_4_3__0__Impl rule__NetworkStructure__Group_4_3__1 ;
+    public final void rule__NetworkStructure__Group_4_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6890:1: ( rule__NetworkStructure__Group_4_3__0__Impl rule__NetworkStructure__Group_4_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6891:2: rule__NetworkStructure__Group_4_3__0__Impl rule__NetworkStructure__Group_4_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_4_3__0__Impl_in_rule__NetworkStructure__Group_4_3__013939);
+            rule__NetworkStructure__Group_4_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_4_3__1_in_rule__NetworkStructure__Group_4_3__013942);
+            rule__NetworkStructure__Group_4_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_4_3__0"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_4_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6898:1: rule__NetworkStructure__Group_4_3__0__Impl : ( ',' ) ;
+    public final void rule__NetworkStructure__Group_4_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6902:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6903:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6903:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6904:1: ','
+            {
+             before(grammarAccess.getNetworkStructureAccess().getCommaKeyword_4_3_0()); 
+            match(input,31,FollowSets000.FOLLOW_31_in_rule__NetworkStructure__Group_4_3__0__Impl13970); 
+             after(grammarAccess.getNetworkStructureAccess().getCommaKeyword_4_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_4_3__0__Impl"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_4_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6917:1: rule__NetworkStructure__Group_4_3__1 : rule__NetworkStructure__Group_4_3__1__Impl ;
+    public final void rule__NetworkStructure__Group_4_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6921:1: ( rule__NetworkStructure__Group_4_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6922:2: rule__NetworkStructure__Group_4_3__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__Group_4_3__1__Impl_in_rule__NetworkStructure__Group_4_3__114001);
+            rule__NetworkStructure__Group_4_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_4_3__1"
+
+
+    // $ANTLR start "rule__NetworkStructure__Group_4_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6928:1: rule__NetworkStructure__Group_4_3__1__Impl : ( ( rule__NetworkStructure__LinksAssignment_4_3_1 ) ) ;
+    public final void rule__NetworkStructure__Group_4_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6932:1: ( ( ( rule__NetworkStructure__LinksAssignment_4_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6933:1: ( ( rule__NetworkStructure__LinksAssignment_4_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6933:1: ( ( rule__NetworkStructure__LinksAssignment_4_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6934:1: ( rule__NetworkStructure__LinksAssignment_4_3_1 )
+            {
+             before(grammarAccess.getNetworkStructureAccess().getLinksAssignment_4_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6935:1: ( rule__NetworkStructure__LinksAssignment_4_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6935:2: rule__NetworkStructure__LinksAssignment_4_3_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkStructure__LinksAssignment_4_3_1_in_rule__NetworkStructure__Group_4_3__1__Impl14028);
+            rule__NetworkStructure__LinksAssignment_4_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkStructureAccess().getLinksAssignment_4_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__Group_4_3__1__Impl"
+
+
+    // $ANTLR start "rule__NetworkConfiguration__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6949:1: rule__NetworkConfiguration__Group__0 : rule__NetworkConfiguration__Group__0__Impl rule__NetworkConfiguration__Group__1 ;
+    public final void rule__NetworkConfiguration__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6953:1: ( rule__NetworkConfiguration__Group__0__Impl rule__NetworkConfiguration__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6954:2: rule__NetworkConfiguration__Group__0__Impl rule__NetworkConfiguration__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkConfiguration__Group__0__Impl_in_rule__NetworkConfiguration__Group__014062);
+            rule__NetworkConfiguration__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkConfiguration__Group__1_in_rule__NetworkConfiguration__Group__014065);
+            rule__NetworkConfiguration__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkConfiguration__Group__0"
+
+
+    // $ANTLR start "rule__NetworkConfiguration__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6961:1: rule__NetworkConfiguration__Group__0__Impl : ( 'NetworkConfiguration' ) ;
+    public final void rule__NetworkConfiguration__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6965:1: ( ( 'NetworkConfiguration' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6966:1: ( 'NetworkConfiguration' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6966:1: ( 'NetworkConfiguration' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6967:1: 'NetworkConfiguration'
+            {
+             before(grammarAccess.getNetworkConfigurationAccess().getNetworkConfigurationKeyword_0()); 
+            match(input,59,FollowSets000.FOLLOW_59_in_rule__NetworkConfiguration__Group__0__Impl14093); 
+             after(grammarAccess.getNetworkConfigurationAccess().getNetworkConfigurationKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkConfiguration__Group__0__Impl"
+
+
+    // $ANTLR start "rule__NetworkConfiguration__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6980:1: rule__NetworkConfiguration__Group__1 : rule__NetworkConfiguration__Group__1__Impl rule__NetworkConfiguration__Group__2 ;
+    public final void rule__NetworkConfiguration__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6984:1: ( rule__NetworkConfiguration__Group__1__Impl rule__NetworkConfiguration__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6985:2: rule__NetworkConfiguration__Group__1__Impl rule__NetworkConfiguration__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkConfiguration__Group__1__Impl_in_rule__NetworkConfiguration__Group__114124);
+            rule__NetworkConfiguration__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkConfiguration__Group__2_in_rule__NetworkConfiguration__Group__114127);
+            rule__NetworkConfiguration__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkConfiguration__Group__1"
+
+
+    // $ANTLR start "rule__NetworkConfiguration__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6992:1: rule__NetworkConfiguration__Group__1__Impl : ( '{' ) ;
+    public final void rule__NetworkConfiguration__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6996:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6997:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6997:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:6998:1: '{'
+            {
+             before(grammarAccess.getNetworkConfigurationAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__NetworkConfiguration__Group__1__Impl14155); 
+             after(grammarAccess.getNetworkConfigurationAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkConfiguration__Group__1__Impl"
+
+
+    // $ANTLR start "rule__NetworkConfiguration__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7011:1: rule__NetworkConfiguration__Group__2 : rule__NetworkConfiguration__Group__2__Impl rule__NetworkConfiguration__Group__3 ;
+    public final void rule__NetworkConfiguration__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7015:1: ( rule__NetworkConfiguration__Group__2__Impl rule__NetworkConfiguration__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7016:2: rule__NetworkConfiguration__Group__2__Impl rule__NetworkConfiguration__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkConfiguration__Group__2__Impl_in_rule__NetworkConfiguration__Group__214186);
+            rule__NetworkConfiguration__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkConfiguration__Group__3_in_rule__NetworkConfiguration__Group__214189);
+            rule__NetworkConfiguration__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkConfiguration__Group__2"
+
+
+    // $ANTLR start "rule__NetworkConfiguration__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7023:1: rule__NetworkConfiguration__Group__2__Impl : ( 'protocolsAndStacks' ) ;
+    public final void rule__NetworkConfiguration__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7027:1: ( ( 'protocolsAndStacks' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7028:1: ( 'protocolsAndStacks' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7028:1: ( 'protocolsAndStacks' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7029:1: 'protocolsAndStacks'
+            {
+             before(grammarAccess.getNetworkConfigurationAccess().getProtocolsAndStacksKeyword_2()); 
+            match(input,60,FollowSets000.FOLLOW_60_in_rule__NetworkConfiguration__Group__2__Impl14217); 
+             after(grammarAccess.getNetworkConfigurationAccess().getProtocolsAndStacksKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkConfiguration__Group__2__Impl"
+
+
+    // $ANTLR start "rule__NetworkConfiguration__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7042:1: rule__NetworkConfiguration__Group__3 : rule__NetworkConfiguration__Group__3__Impl rule__NetworkConfiguration__Group__4 ;
+    public final void rule__NetworkConfiguration__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7046:1: ( rule__NetworkConfiguration__Group__3__Impl rule__NetworkConfiguration__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7047:2: rule__NetworkConfiguration__Group__3__Impl rule__NetworkConfiguration__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkConfiguration__Group__3__Impl_in_rule__NetworkConfiguration__Group__314248);
+            rule__NetworkConfiguration__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkConfiguration__Group__4_in_rule__NetworkConfiguration__Group__314251);
+            rule__NetworkConfiguration__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkConfiguration__Group__3"
+
+
+    // $ANTLR start "rule__NetworkConfiguration__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7054:1: rule__NetworkConfiguration__Group__3__Impl : ( ( rule__NetworkConfiguration__ProtocolsAndStacksAssignment_3 ) ) ;
+    public final void rule__NetworkConfiguration__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7058:1: ( ( ( rule__NetworkConfiguration__ProtocolsAndStacksAssignment_3 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7059:1: ( ( rule__NetworkConfiguration__ProtocolsAndStacksAssignment_3 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7059:1: ( ( rule__NetworkConfiguration__ProtocolsAndStacksAssignment_3 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7060:1: ( rule__NetworkConfiguration__ProtocolsAndStacksAssignment_3 )
+            {
+             before(grammarAccess.getNetworkConfigurationAccess().getProtocolsAndStacksAssignment_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7061:1: ( rule__NetworkConfiguration__ProtocolsAndStacksAssignment_3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7061:2: rule__NetworkConfiguration__ProtocolsAndStacksAssignment_3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkConfiguration__ProtocolsAndStacksAssignment_3_in_rule__NetworkConfiguration__Group__3__Impl14278);
+            rule__NetworkConfiguration__ProtocolsAndStacksAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkConfigurationAccess().getProtocolsAndStacksAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkConfiguration__Group__3__Impl"
+
+
+    // $ANTLR start "rule__NetworkConfiguration__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7071:1: rule__NetworkConfiguration__Group__4 : rule__NetworkConfiguration__Group__4__Impl rule__NetworkConfiguration__Group__5 ;
+    public final void rule__NetworkConfiguration__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7075:1: ( rule__NetworkConfiguration__Group__4__Impl rule__NetworkConfiguration__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7076:2: rule__NetworkConfiguration__Group__4__Impl rule__NetworkConfiguration__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkConfiguration__Group__4__Impl_in_rule__NetworkConfiguration__Group__414308);
+            rule__NetworkConfiguration__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkConfiguration__Group__5_in_rule__NetworkConfiguration__Group__414311);
+            rule__NetworkConfiguration__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkConfiguration__Group__4"
+
+
+    // $ANTLR start "rule__NetworkConfiguration__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7083:1: rule__NetworkConfiguration__Group__4__Impl : ( 'routes' ) ;
+    public final void rule__NetworkConfiguration__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7087:1: ( ( 'routes' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7088:1: ( 'routes' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7088:1: ( 'routes' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7089:1: 'routes'
+            {
+             before(grammarAccess.getNetworkConfigurationAccess().getRoutesKeyword_4()); 
+            match(input,61,FollowSets000.FOLLOW_61_in_rule__NetworkConfiguration__Group__4__Impl14339); 
+             after(grammarAccess.getNetworkConfigurationAccess().getRoutesKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkConfiguration__Group__4__Impl"
+
+
+    // $ANTLR start "rule__NetworkConfiguration__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7102:1: rule__NetworkConfiguration__Group__5 : rule__NetworkConfiguration__Group__5__Impl rule__NetworkConfiguration__Group__6 ;
+    public final void rule__NetworkConfiguration__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7106:1: ( rule__NetworkConfiguration__Group__5__Impl rule__NetworkConfiguration__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7107:2: rule__NetworkConfiguration__Group__5__Impl rule__NetworkConfiguration__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkConfiguration__Group__5__Impl_in_rule__NetworkConfiguration__Group__514370);
+            rule__NetworkConfiguration__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkConfiguration__Group__6_in_rule__NetworkConfiguration__Group__514373);
+            rule__NetworkConfiguration__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkConfiguration__Group__5"
+
+
+    // $ANTLR start "rule__NetworkConfiguration__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7114:1: rule__NetworkConfiguration__Group__5__Impl : ( ( rule__NetworkConfiguration__RoutesAssignment_5 ) ) ;
+    public final void rule__NetworkConfiguration__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7118:1: ( ( ( rule__NetworkConfiguration__RoutesAssignment_5 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7119:1: ( ( rule__NetworkConfiguration__RoutesAssignment_5 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7119:1: ( ( rule__NetworkConfiguration__RoutesAssignment_5 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7120:1: ( rule__NetworkConfiguration__RoutesAssignment_5 )
+            {
+             before(grammarAccess.getNetworkConfigurationAccess().getRoutesAssignment_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7121:1: ( rule__NetworkConfiguration__RoutesAssignment_5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7121:2: rule__NetworkConfiguration__RoutesAssignment_5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkConfiguration__RoutesAssignment_5_in_rule__NetworkConfiguration__Group__5__Impl14400);
+            rule__NetworkConfiguration__RoutesAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkConfigurationAccess().getRoutesAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkConfiguration__Group__5__Impl"
+
+
+    // $ANTLR start "rule__NetworkConfiguration__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7131:1: rule__NetworkConfiguration__Group__6 : rule__NetworkConfiguration__Group__6__Impl ;
+    public final void rule__NetworkConfiguration__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7135:1: ( rule__NetworkConfiguration__Group__6__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7136:2: rule__NetworkConfiguration__Group__6__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkConfiguration__Group__6__Impl_in_rule__NetworkConfiguration__Group__614430);
+            rule__NetworkConfiguration__Group__6__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkConfiguration__Group__6"
+
+
+    // $ANTLR start "rule__NetworkConfiguration__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7142:1: rule__NetworkConfiguration__Group__6__Impl : ( '}' ) ;
+    public final void rule__NetworkConfiguration__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7146:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7147:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7147:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7148:1: '}'
+            {
+             before(grammarAccess.getNetworkConfigurationAccess().getRightCurlyBracketKeyword_6()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__NetworkConfiguration__Group__6__Impl14458); 
+             after(grammarAccess.getNetworkConfigurationAccess().getRightCurlyBracketKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkConfiguration__Group__6__Impl"
+
+
+    // $ANTLR start "rule__ExperimentParam__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7175:1: rule__ExperimentParam__Group__0 : rule__ExperimentParam__Group__0__Impl rule__ExperimentParam__Group__1 ;
+    public final void rule__ExperimentParam__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7179:1: ( rule__ExperimentParam__Group__0__Impl rule__ExperimentParam__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7180:2: rule__ExperimentParam__Group__0__Impl rule__ExperimentParam__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExperimentParam__Group__0__Impl_in_rule__ExperimentParam__Group__014503);
+            rule__ExperimentParam__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ExperimentParam__Group__1_in_rule__ExperimentParam__Group__014506);
+            rule__ExperimentParam__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExperimentParam__Group__0"
+
+
+    // $ANTLR start "rule__ExperimentParam__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7187:1: rule__ExperimentParam__Group__0__Impl : ( 'ExperimentParam' ) ;
+    public final void rule__ExperimentParam__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7191:1: ( ( 'ExperimentParam' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7192:1: ( 'ExperimentParam' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7192:1: ( 'ExperimentParam' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7193:1: 'ExperimentParam'
+            {
+             before(grammarAccess.getExperimentParamAccess().getExperimentParamKeyword_0()); 
+            match(input,62,FollowSets000.FOLLOW_62_in_rule__ExperimentParam__Group__0__Impl14534); 
+             after(grammarAccess.getExperimentParamAccess().getExperimentParamKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExperimentParam__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ExperimentParam__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7206:1: rule__ExperimentParam__Group__1 : rule__ExperimentParam__Group__1__Impl rule__ExperimentParam__Group__2 ;
+    public final void rule__ExperimentParam__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7210:1: ( rule__ExperimentParam__Group__1__Impl rule__ExperimentParam__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7211:2: rule__ExperimentParam__Group__1__Impl rule__ExperimentParam__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExperimentParam__Group__1__Impl_in_rule__ExperimentParam__Group__114565);
+            rule__ExperimentParam__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ExperimentParam__Group__2_in_rule__ExperimentParam__Group__114568);
+            rule__ExperimentParam__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExperimentParam__Group__1"
+
+
+    // $ANTLR start "rule__ExperimentParam__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7218:1: rule__ExperimentParam__Group__1__Impl : ( ( rule__ExperimentParam__NameAssignment_1 ) ) ;
+    public final void rule__ExperimentParam__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7222:1: ( ( ( rule__ExperimentParam__NameAssignment_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7223:1: ( ( rule__ExperimentParam__NameAssignment_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7223:1: ( ( rule__ExperimentParam__NameAssignment_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7224:1: ( rule__ExperimentParam__NameAssignment_1 )
+            {
+             before(grammarAccess.getExperimentParamAccess().getNameAssignment_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7225:1: ( rule__ExperimentParam__NameAssignment_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7225:2: rule__ExperimentParam__NameAssignment_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExperimentParam__NameAssignment_1_in_rule__ExperimentParam__Group__1__Impl14595);
+            rule__ExperimentParam__NameAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getExperimentParamAccess().getNameAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExperimentParam__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ExperimentParam__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7235:1: rule__ExperimentParam__Group__2 : rule__ExperimentParam__Group__2__Impl rule__ExperimentParam__Group__3 ;
+    public final void rule__ExperimentParam__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7239:1: ( rule__ExperimentParam__Group__2__Impl rule__ExperimentParam__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7240:2: rule__ExperimentParam__Group__2__Impl rule__ExperimentParam__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExperimentParam__Group__2__Impl_in_rule__ExperimentParam__Group__214625);
+            rule__ExperimentParam__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ExperimentParam__Group__3_in_rule__ExperimentParam__Group__214628);
+            rule__ExperimentParam__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExperimentParam__Group__2"
+
+
+    // $ANTLR start "rule__ExperimentParam__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7247:1: rule__ExperimentParam__Group__2__Impl : ( '{' ) ;
+    public final void rule__ExperimentParam__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7251:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7252:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7252:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7253:1: '{'
+            {
+             before(grammarAccess.getExperimentParamAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__ExperimentParam__Group__2__Impl14656); 
+             after(grammarAccess.getExperimentParamAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExperimentParam__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ExperimentParam__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7266:1: rule__ExperimentParam__Group__3 : rule__ExperimentParam__Group__3__Impl rule__ExperimentParam__Group__4 ;
+    public final void rule__ExperimentParam__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7270:1: ( rule__ExperimentParam__Group__3__Impl rule__ExperimentParam__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7271:2: rule__ExperimentParam__Group__3__Impl rule__ExperimentParam__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExperimentParam__Group__3__Impl_in_rule__ExperimentParam__Group__314687);
+            rule__ExperimentParam__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ExperimentParam__Group__4_in_rule__ExperimentParam__Group__314690);
+            rule__ExperimentParam__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExperimentParam__Group__3"
+
+
+    // $ANTLR start "rule__ExperimentParam__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7278:1: rule__ExperimentParam__Group__3__Impl : ( 'value' ) ;
+    public final void rule__ExperimentParam__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7282:1: ( ( 'value' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7283:1: ( 'value' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7283:1: ( 'value' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7284:1: 'value'
+            {
+             before(grammarAccess.getExperimentParamAccess().getValueKeyword_3()); 
+            match(input,63,FollowSets000.FOLLOW_63_in_rule__ExperimentParam__Group__3__Impl14718); 
+             after(grammarAccess.getExperimentParamAccess().getValueKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExperimentParam__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ExperimentParam__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7297:1: rule__ExperimentParam__Group__4 : rule__ExperimentParam__Group__4__Impl rule__ExperimentParam__Group__5 ;
+    public final void rule__ExperimentParam__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7301:1: ( rule__ExperimentParam__Group__4__Impl rule__ExperimentParam__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7302:2: rule__ExperimentParam__Group__4__Impl rule__ExperimentParam__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExperimentParam__Group__4__Impl_in_rule__ExperimentParam__Group__414749);
+            rule__ExperimentParam__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ExperimentParam__Group__5_in_rule__ExperimentParam__Group__414752);
+            rule__ExperimentParam__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExperimentParam__Group__4"
+
+
+    // $ANTLR start "rule__ExperimentParam__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7309:1: rule__ExperimentParam__Group__4__Impl : ( ( rule__ExperimentParam__ValueAssignment_4 ) ) ;
+    public final void rule__ExperimentParam__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7313:1: ( ( ( rule__ExperimentParam__ValueAssignment_4 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7314:1: ( ( rule__ExperimentParam__ValueAssignment_4 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7314:1: ( ( rule__ExperimentParam__ValueAssignment_4 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7315:1: ( rule__ExperimentParam__ValueAssignment_4 )
+            {
+             before(grammarAccess.getExperimentParamAccess().getValueAssignment_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7316:1: ( rule__ExperimentParam__ValueAssignment_4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7316:2: rule__ExperimentParam__ValueAssignment_4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExperimentParam__ValueAssignment_4_in_rule__ExperimentParam__Group__4__Impl14779);
+            rule__ExperimentParam__ValueAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getExperimentParamAccess().getValueAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExperimentParam__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ExperimentParam__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7326:1: rule__ExperimentParam__Group__5 : rule__ExperimentParam__Group__5__Impl ;
+    public final void rule__ExperimentParam__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7330:1: ( rule__ExperimentParam__Group__5__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7331:2: rule__ExperimentParam__Group__5__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ExperimentParam__Group__5__Impl_in_rule__ExperimentParam__Group__514809);
+            rule__ExperimentParam__Group__5__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExperimentParam__Group__5"
+
+
+    // $ANTLR start "rule__ExperimentParam__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7337:1: rule__ExperimentParam__Group__5__Impl : ( '}' ) ;
+    public final void rule__ExperimentParam__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7341:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7342:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7342:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7343:1: '}'
+            {
+             before(grammarAccess.getExperimentParamAccess().getRightCurlyBracketKeyword_5()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__ExperimentParam__Group__5__Impl14837); 
+             after(grammarAccess.getExperimentParamAccess().getRightCurlyBracketKeyword_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExperimentParam__Group__5__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7368:1: rule__SoftwareComponent__Group__0 : rule__SoftwareComponent__Group__0__Impl rule__SoftwareComponent__Group__1 ;
+    public final void rule__SoftwareComponent__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7372:1: ( rule__SoftwareComponent__Group__0__Impl rule__SoftwareComponent__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7373:2: rule__SoftwareComponent__Group__0__Impl rule__SoftwareComponent__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__0__Impl_in_rule__SoftwareComponent__Group__014880);
+            rule__SoftwareComponent__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__1_in_rule__SoftwareComponent__Group__014883);
+            rule__SoftwareComponent__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__0"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7380:1: rule__SoftwareComponent__Group__0__Impl : ( 'SoftwareComponent' ) ;
+    public final void rule__SoftwareComponent__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7384:1: ( ( 'SoftwareComponent' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7385:1: ( 'SoftwareComponent' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7385:1: ( 'SoftwareComponent' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7386:1: 'SoftwareComponent'
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getSoftwareComponentKeyword_0()); 
+            match(input,64,FollowSets000.FOLLOW_64_in_rule__SoftwareComponent__Group__0__Impl14911); 
+             after(grammarAccess.getSoftwareComponentAccess().getSoftwareComponentKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__0__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7399:1: rule__SoftwareComponent__Group__1 : rule__SoftwareComponent__Group__1__Impl rule__SoftwareComponent__Group__2 ;
+    public final void rule__SoftwareComponent__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7403:1: ( rule__SoftwareComponent__Group__1__Impl rule__SoftwareComponent__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7404:2: rule__SoftwareComponent__Group__1__Impl rule__SoftwareComponent__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__1__Impl_in_rule__SoftwareComponent__Group__114942);
+            rule__SoftwareComponent__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__2_in_rule__SoftwareComponent__Group__114945);
+            rule__SoftwareComponent__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__1"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7411:1: rule__SoftwareComponent__Group__1__Impl : ( ( rule__SoftwareComponent__IdAssignment_1 ) ) ;
+    public final void rule__SoftwareComponent__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7415:1: ( ( ( rule__SoftwareComponent__IdAssignment_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7416:1: ( ( rule__SoftwareComponent__IdAssignment_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7416:1: ( ( rule__SoftwareComponent__IdAssignment_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7417:1: ( rule__SoftwareComponent__IdAssignment_1 )
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getIdAssignment_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7418:1: ( rule__SoftwareComponent__IdAssignment_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7418:2: rule__SoftwareComponent__IdAssignment_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__IdAssignment_1_in_rule__SoftwareComponent__Group__1__Impl14972);
+            rule__SoftwareComponent__IdAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSoftwareComponentAccess().getIdAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__1__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7428:1: rule__SoftwareComponent__Group__2 : rule__SoftwareComponent__Group__2__Impl rule__SoftwareComponent__Group__3 ;
+    public final void rule__SoftwareComponent__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7432:1: ( rule__SoftwareComponent__Group__2__Impl rule__SoftwareComponent__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7433:2: rule__SoftwareComponent__Group__2__Impl rule__SoftwareComponent__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__2__Impl_in_rule__SoftwareComponent__Group__215002);
+            rule__SoftwareComponent__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__3_in_rule__SoftwareComponent__Group__215005);
+            rule__SoftwareComponent__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__2"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7440:1: rule__SoftwareComponent__Group__2__Impl : ( '{' ) ;
+    public final void rule__SoftwareComponent__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7444:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7445:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7445:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7446:1: '{'
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__SoftwareComponent__Group__2__Impl15033); 
+             after(grammarAccess.getSoftwareComponentAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__2__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7459:1: rule__SoftwareComponent__Group__3 : rule__SoftwareComponent__Group__3__Impl rule__SoftwareComponent__Group__4 ;
+    public final void rule__SoftwareComponent__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7463:1: ( rule__SoftwareComponent__Group__3__Impl rule__SoftwareComponent__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7464:2: rule__SoftwareComponent__Group__3__Impl rule__SoftwareComponent__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__3__Impl_in_rule__SoftwareComponent__Group__315064);
+            rule__SoftwareComponent__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__4_in_rule__SoftwareComponent__Group__315067);
+            rule__SoftwareComponent__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__3"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7471:1: rule__SoftwareComponent__Group__3__Impl : ( 'name' ) ;
+    public final void rule__SoftwareComponent__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7475:1: ( ( 'name' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7476:1: ( 'name' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7476:1: ( 'name' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7477:1: 'name'
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getNameKeyword_3()); 
+            match(input,65,FollowSets000.FOLLOW_65_in_rule__SoftwareComponent__Group__3__Impl15095); 
+             after(grammarAccess.getSoftwareComponentAccess().getNameKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__3__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7490:1: rule__SoftwareComponent__Group__4 : rule__SoftwareComponent__Group__4__Impl rule__SoftwareComponent__Group__5 ;
+    public final void rule__SoftwareComponent__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7494:1: ( rule__SoftwareComponent__Group__4__Impl rule__SoftwareComponent__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7495:2: rule__SoftwareComponent__Group__4__Impl rule__SoftwareComponent__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__4__Impl_in_rule__SoftwareComponent__Group__415126);
+            rule__SoftwareComponent__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__5_in_rule__SoftwareComponent__Group__415129);
+            rule__SoftwareComponent__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__4"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7502:1: rule__SoftwareComponent__Group__4__Impl : ( ( rule__SoftwareComponent__NameAssignment_4 ) ) ;
+    public final void rule__SoftwareComponent__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7506:1: ( ( ( rule__SoftwareComponent__NameAssignment_4 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7507:1: ( ( rule__SoftwareComponent__NameAssignment_4 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7507:1: ( ( rule__SoftwareComponent__NameAssignment_4 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7508:1: ( rule__SoftwareComponent__NameAssignment_4 )
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getNameAssignment_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7509:1: ( rule__SoftwareComponent__NameAssignment_4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7509:2: rule__SoftwareComponent__NameAssignment_4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__NameAssignment_4_in_rule__SoftwareComponent__Group__4__Impl15156);
+            rule__SoftwareComponent__NameAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSoftwareComponentAccess().getNameAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__4__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7519:1: rule__SoftwareComponent__Group__5 : rule__SoftwareComponent__Group__5__Impl rule__SoftwareComponent__Group__6 ;
+    public final void rule__SoftwareComponent__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7523:1: ( rule__SoftwareComponent__Group__5__Impl rule__SoftwareComponent__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7524:2: rule__SoftwareComponent__Group__5__Impl rule__SoftwareComponent__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__5__Impl_in_rule__SoftwareComponent__Group__515186);
+            rule__SoftwareComponent__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__6_in_rule__SoftwareComponent__Group__515189);
+            rule__SoftwareComponent__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__5"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7531:1: rule__SoftwareComponent__Group__5__Impl : ( ( rule__SoftwareComponent__Group_5__0 )? ) ;
+    public final void rule__SoftwareComponent__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7535:1: ( ( ( rule__SoftwareComponent__Group_5__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7536:1: ( ( rule__SoftwareComponent__Group_5__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7536:1: ( ( rule__SoftwareComponent__Group_5__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7537:1: ( rule__SoftwareComponent__Group_5__0 )?
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getGroup_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7538:1: ( rule__SoftwareComponent__Group_5__0 )?
+            int alt31=2;
+            int LA31_0 = input.LA(1);
+
+            if ( (LA31_0==67) ) {
+                alt31=1;
+            }
+            switch (alt31) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7538:2: rule__SoftwareComponent__Group_5__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_5__0_in_rule__SoftwareComponent__Group__5__Impl15216);
+                    rule__SoftwareComponent__Group_5__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getSoftwareComponentAccess().getGroup_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__5__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7548:1: rule__SoftwareComponent__Group__6 : rule__SoftwareComponent__Group__6__Impl rule__SoftwareComponent__Group__7 ;
+    public final void rule__SoftwareComponent__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7552:1: ( rule__SoftwareComponent__Group__6__Impl rule__SoftwareComponent__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7553:2: rule__SoftwareComponent__Group__6__Impl rule__SoftwareComponent__Group__7
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__6__Impl_in_rule__SoftwareComponent__Group__615247);
+            rule__SoftwareComponent__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__7_in_rule__SoftwareComponent__Group__615250);
+            rule__SoftwareComponent__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__6"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7560:1: rule__SoftwareComponent__Group__6__Impl : ( 'deployedOn' ) ;
+    public final void rule__SoftwareComponent__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7564:1: ( ( 'deployedOn' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7565:1: ( 'deployedOn' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7565:1: ( 'deployedOn' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7566:1: 'deployedOn'
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getDeployedOnKeyword_6()); 
+            match(input,66,FollowSets000.FOLLOW_66_in_rule__SoftwareComponent__Group__6__Impl15278); 
+             after(grammarAccess.getSoftwareComponentAccess().getDeployedOnKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__6__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7579:1: rule__SoftwareComponent__Group__7 : rule__SoftwareComponent__Group__7__Impl rule__SoftwareComponent__Group__8 ;
+    public final void rule__SoftwareComponent__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7583:1: ( rule__SoftwareComponent__Group__7__Impl rule__SoftwareComponent__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7584:2: rule__SoftwareComponent__Group__7__Impl rule__SoftwareComponent__Group__8
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__7__Impl_in_rule__SoftwareComponent__Group__715309);
+            rule__SoftwareComponent__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__8_in_rule__SoftwareComponent__Group__715312);
+            rule__SoftwareComponent__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__7"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7591:1: rule__SoftwareComponent__Group__7__Impl : ( ( rule__SoftwareComponent__DeployedOnAssignment_7 ) ) ;
+    public final void rule__SoftwareComponent__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7595:1: ( ( ( rule__SoftwareComponent__DeployedOnAssignment_7 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7596:1: ( ( rule__SoftwareComponent__DeployedOnAssignment_7 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7596:1: ( ( rule__SoftwareComponent__DeployedOnAssignment_7 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7597:1: ( rule__SoftwareComponent__DeployedOnAssignment_7 )
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getDeployedOnAssignment_7()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7598:1: ( rule__SoftwareComponent__DeployedOnAssignment_7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7598:2: rule__SoftwareComponent__DeployedOnAssignment_7
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__DeployedOnAssignment_7_in_rule__SoftwareComponent__Group__7__Impl15339);
+            rule__SoftwareComponent__DeployedOnAssignment_7();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSoftwareComponentAccess().getDeployedOnAssignment_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__7__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7608:1: rule__SoftwareComponent__Group__8 : rule__SoftwareComponent__Group__8__Impl rule__SoftwareComponent__Group__9 ;
+    public final void rule__SoftwareComponent__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7612:1: ( rule__SoftwareComponent__Group__8__Impl rule__SoftwareComponent__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7613:2: rule__SoftwareComponent__Group__8__Impl rule__SoftwareComponent__Group__9
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__8__Impl_in_rule__SoftwareComponent__Group__815369);
+            rule__SoftwareComponent__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__9_in_rule__SoftwareComponent__Group__815372);
+            rule__SoftwareComponent__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__8"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7620:1: rule__SoftwareComponent__Group__8__Impl : ( ( rule__SoftwareComponent__Group_8__0 )? ) ;
+    public final void rule__SoftwareComponent__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7624:1: ( ( ( rule__SoftwareComponent__Group_8__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7625:1: ( ( rule__SoftwareComponent__Group_8__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7625:1: ( ( rule__SoftwareComponent__Group_8__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7626:1: ( rule__SoftwareComponent__Group_8__0 )?
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getGroup_8()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7627:1: ( rule__SoftwareComponent__Group_8__0 )?
+            int alt32=2;
+            int LA32_0 = input.LA(1);
+
+            if ( (LA32_0==68) ) {
+                alt32=1;
+            }
+            switch (alt32) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7627:2: rule__SoftwareComponent__Group_8__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_8__0_in_rule__SoftwareComponent__Group__8__Impl15399);
+                    rule__SoftwareComponent__Group_8__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getSoftwareComponentAccess().getGroup_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__8__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7637:1: rule__SoftwareComponent__Group__9 : rule__SoftwareComponent__Group__9__Impl ;
+    public final void rule__SoftwareComponent__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7641:1: ( rule__SoftwareComponent__Group__9__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7642:2: rule__SoftwareComponent__Group__9__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group__9__Impl_in_rule__SoftwareComponent__Group__915430);
+            rule__SoftwareComponent__Group__9__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__9"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7648:1: rule__SoftwareComponent__Group__9__Impl : ( '}' ) ;
+    public final void rule__SoftwareComponent__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7652:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7653:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7653:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7654:1: '}'
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getRightCurlyBracketKeyword_9()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__SoftwareComponent__Group__9__Impl15458); 
+             after(grammarAccess.getSoftwareComponentAccess().getRightCurlyBracketKeyword_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group__9__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_5__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7687:1: rule__SoftwareComponent__Group_5__0 : rule__SoftwareComponent__Group_5__0__Impl rule__SoftwareComponent__Group_5__1 ;
+    public final void rule__SoftwareComponent__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7691:1: ( rule__SoftwareComponent__Group_5__0__Impl rule__SoftwareComponent__Group_5__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7692:2: rule__SoftwareComponent__Group_5__0__Impl rule__SoftwareComponent__Group_5__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_5__0__Impl_in_rule__SoftwareComponent__Group_5__015509);
+            rule__SoftwareComponent__Group_5__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_5__1_in_rule__SoftwareComponent__Group_5__015512);
+            rule__SoftwareComponent__Group_5__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_5__0"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_5__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7699:1: rule__SoftwareComponent__Group_5__0__Impl : ( 'alternativeNames' ) ;
+    public final void rule__SoftwareComponent__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7703:1: ( ( 'alternativeNames' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7704:1: ( 'alternativeNames' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7704:1: ( 'alternativeNames' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7705:1: 'alternativeNames'
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesKeyword_5_0()); 
+            match(input,67,FollowSets000.FOLLOW_67_in_rule__SoftwareComponent__Group_5__0__Impl15540); 
+             after(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesKeyword_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_5__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7718:1: rule__SoftwareComponent__Group_5__1 : rule__SoftwareComponent__Group_5__1__Impl rule__SoftwareComponent__Group_5__2 ;
+    public final void rule__SoftwareComponent__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7722:1: ( rule__SoftwareComponent__Group_5__1__Impl rule__SoftwareComponent__Group_5__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7723:2: rule__SoftwareComponent__Group_5__1__Impl rule__SoftwareComponent__Group_5__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_5__1__Impl_in_rule__SoftwareComponent__Group_5__115571);
+            rule__SoftwareComponent__Group_5__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_5__2_in_rule__SoftwareComponent__Group_5__115574);
+            rule__SoftwareComponent__Group_5__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_5__1"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_5__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7730:1: rule__SoftwareComponent__Group_5__1__Impl : ( '{' ) ;
+    public final void rule__SoftwareComponent__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7734:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7735:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7735:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7736:1: '{'
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getLeftCurlyBracketKeyword_5_1()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__SoftwareComponent__Group_5__1__Impl15602); 
+             after(grammarAccess.getSoftwareComponentAccess().getLeftCurlyBracketKeyword_5_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_5__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7749:1: rule__SoftwareComponent__Group_5__2 : rule__SoftwareComponent__Group_5__2__Impl rule__SoftwareComponent__Group_5__3 ;
+    public final void rule__SoftwareComponent__Group_5__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7753:1: ( rule__SoftwareComponent__Group_5__2__Impl rule__SoftwareComponent__Group_5__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7754:2: rule__SoftwareComponent__Group_5__2__Impl rule__SoftwareComponent__Group_5__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_5__2__Impl_in_rule__SoftwareComponent__Group_5__215633);
+            rule__SoftwareComponent__Group_5__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_5__3_in_rule__SoftwareComponent__Group_5__215636);
+            rule__SoftwareComponent__Group_5__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_5__2"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_5__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7761:1: rule__SoftwareComponent__Group_5__2__Impl : ( ( rule__SoftwareComponent__AlternativeNamesAssignment_5_2 ) ) ;
+    public final void rule__SoftwareComponent__Group_5__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7765:1: ( ( ( rule__SoftwareComponent__AlternativeNamesAssignment_5_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7766:1: ( ( rule__SoftwareComponent__AlternativeNamesAssignment_5_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7766:1: ( ( rule__SoftwareComponent__AlternativeNamesAssignment_5_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7767:1: ( rule__SoftwareComponent__AlternativeNamesAssignment_5_2 )
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesAssignment_5_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7768:1: ( rule__SoftwareComponent__AlternativeNamesAssignment_5_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7768:2: rule__SoftwareComponent__AlternativeNamesAssignment_5_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__AlternativeNamesAssignment_5_2_in_rule__SoftwareComponent__Group_5__2__Impl15663);
+            rule__SoftwareComponent__AlternativeNamesAssignment_5_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesAssignment_5_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_5__2__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_5__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7778:1: rule__SoftwareComponent__Group_5__3 : rule__SoftwareComponent__Group_5__3__Impl rule__SoftwareComponent__Group_5__4 ;
+    public final void rule__SoftwareComponent__Group_5__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7782:1: ( rule__SoftwareComponent__Group_5__3__Impl rule__SoftwareComponent__Group_5__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7783:2: rule__SoftwareComponent__Group_5__3__Impl rule__SoftwareComponent__Group_5__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_5__3__Impl_in_rule__SoftwareComponent__Group_5__315693);
+            rule__SoftwareComponent__Group_5__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_5__4_in_rule__SoftwareComponent__Group_5__315696);
+            rule__SoftwareComponent__Group_5__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_5__3"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_5__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7790:1: rule__SoftwareComponent__Group_5__3__Impl : ( ( rule__SoftwareComponent__Group_5_3__0 )* ) ;
+    public final void rule__SoftwareComponent__Group_5__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7794:1: ( ( ( rule__SoftwareComponent__Group_5_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7795:1: ( ( rule__SoftwareComponent__Group_5_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7795:1: ( ( rule__SoftwareComponent__Group_5_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7796:1: ( rule__SoftwareComponent__Group_5_3__0 )*
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getGroup_5_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7797:1: ( rule__SoftwareComponent__Group_5_3__0 )*
+            loop33:
+            do {
+                int alt33=2;
+                int LA33_0 = input.LA(1);
+
+                if ( (LA33_0==31) ) {
+                    alt33=1;
+                }
+
+
+                switch (alt33) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7797:2: rule__SoftwareComponent__Group_5_3__0
+            	    {
+            	    pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_5_3__0_in_rule__SoftwareComponent__Group_5__3__Impl15723);
+            	    rule__SoftwareComponent__Group_5_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop33;
+                }
+            } while (true);
+
+             after(grammarAccess.getSoftwareComponentAccess().getGroup_5_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_5__3__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_5__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7807:1: rule__SoftwareComponent__Group_5__4 : rule__SoftwareComponent__Group_5__4__Impl ;
+    public final void rule__SoftwareComponent__Group_5__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7811:1: ( rule__SoftwareComponent__Group_5__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7812:2: rule__SoftwareComponent__Group_5__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_5__4__Impl_in_rule__SoftwareComponent__Group_5__415754);
+            rule__SoftwareComponent__Group_5__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_5__4"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_5__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7818:1: rule__SoftwareComponent__Group_5__4__Impl : ( '}' ) ;
+    public final void rule__SoftwareComponent__Group_5__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7822:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7823:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7823:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7824:1: '}'
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getRightCurlyBracketKeyword_5_4()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__SoftwareComponent__Group_5__4__Impl15782); 
+             after(grammarAccess.getSoftwareComponentAccess().getRightCurlyBracketKeyword_5_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_5__4__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_5_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7847:1: rule__SoftwareComponent__Group_5_3__0 : rule__SoftwareComponent__Group_5_3__0__Impl rule__SoftwareComponent__Group_5_3__1 ;
+    public final void rule__SoftwareComponent__Group_5_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7851:1: ( rule__SoftwareComponent__Group_5_3__0__Impl rule__SoftwareComponent__Group_5_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7852:2: rule__SoftwareComponent__Group_5_3__0__Impl rule__SoftwareComponent__Group_5_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_5_3__0__Impl_in_rule__SoftwareComponent__Group_5_3__015823);
+            rule__SoftwareComponent__Group_5_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_5_3__1_in_rule__SoftwareComponent__Group_5_3__015826);
+            rule__SoftwareComponent__Group_5_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_5_3__0"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_5_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7859:1: rule__SoftwareComponent__Group_5_3__0__Impl : ( ',' ) ;
+    public final void rule__SoftwareComponent__Group_5_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7863:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7864:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7864:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7865:1: ','
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getCommaKeyword_5_3_0()); 
+            match(input,31,FollowSets000.FOLLOW_31_in_rule__SoftwareComponent__Group_5_3__0__Impl15854); 
+             after(grammarAccess.getSoftwareComponentAccess().getCommaKeyword_5_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_5_3__0__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_5_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7878:1: rule__SoftwareComponent__Group_5_3__1 : rule__SoftwareComponent__Group_5_3__1__Impl ;
+    public final void rule__SoftwareComponent__Group_5_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7882:1: ( rule__SoftwareComponent__Group_5_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7883:2: rule__SoftwareComponent__Group_5_3__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_5_3__1__Impl_in_rule__SoftwareComponent__Group_5_3__115885);
+            rule__SoftwareComponent__Group_5_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_5_3__1"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_5_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7889:1: rule__SoftwareComponent__Group_5_3__1__Impl : ( ( rule__SoftwareComponent__AlternativeNamesAssignment_5_3_1 ) ) ;
+    public final void rule__SoftwareComponent__Group_5_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7893:1: ( ( ( rule__SoftwareComponent__AlternativeNamesAssignment_5_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7894:1: ( ( rule__SoftwareComponent__AlternativeNamesAssignment_5_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7894:1: ( ( rule__SoftwareComponent__AlternativeNamesAssignment_5_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7895:1: ( rule__SoftwareComponent__AlternativeNamesAssignment_5_3_1 )
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesAssignment_5_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7896:1: ( rule__SoftwareComponent__AlternativeNamesAssignment_5_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7896:2: rule__SoftwareComponent__AlternativeNamesAssignment_5_3_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__AlternativeNamesAssignment_5_3_1_in_rule__SoftwareComponent__Group_5_3__1__Impl15912);
+            rule__SoftwareComponent__AlternativeNamesAssignment_5_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesAssignment_5_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_5_3__1__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_8__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7910:1: rule__SoftwareComponent__Group_8__0 : rule__SoftwareComponent__Group_8__0__Impl rule__SoftwareComponent__Group_8__1 ;
+    public final void rule__SoftwareComponent__Group_8__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7914:1: ( rule__SoftwareComponent__Group_8__0__Impl rule__SoftwareComponent__Group_8__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7915:2: rule__SoftwareComponent__Group_8__0__Impl rule__SoftwareComponent__Group_8__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_8__0__Impl_in_rule__SoftwareComponent__Group_8__015946);
+            rule__SoftwareComponent__Group_8__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_8__1_in_rule__SoftwareComponent__Group_8__015949);
+            rule__SoftwareComponent__Group_8__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_8__0"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_8__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7922:1: rule__SoftwareComponent__Group_8__0__Impl : ( 'trafficSources' ) ;
+    public final void rule__SoftwareComponent__Group_8__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7926:1: ( ( 'trafficSources' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7927:1: ( 'trafficSources' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7927:1: ( 'trafficSources' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7928:1: 'trafficSources'
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesKeyword_8_0()); 
+            match(input,68,FollowSets000.FOLLOW_68_in_rule__SoftwareComponent__Group_8__0__Impl15977); 
+             after(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesKeyword_8_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_8__0__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_8__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7941:1: rule__SoftwareComponent__Group_8__1 : rule__SoftwareComponent__Group_8__1__Impl rule__SoftwareComponent__Group_8__2 ;
+    public final void rule__SoftwareComponent__Group_8__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7945:1: ( rule__SoftwareComponent__Group_8__1__Impl rule__SoftwareComponent__Group_8__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7946:2: rule__SoftwareComponent__Group_8__1__Impl rule__SoftwareComponent__Group_8__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_8__1__Impl_in_rule__SoftwareComponent__Group_8__116008);
+            rule__SoftwareComponent__Group_8__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_8__2_in_rule__SoftwareComponent__Group_8__116011);
+            rule__SoftwareComponent__Group_8__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_8__1"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_8__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7953:1: rule__SoftwareComponent__Group_8__1__Impl : ( '{' ) ;
+    public final void rule__SoftwareComponent__Group_8__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7957:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7958:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7958:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7959:1: '{'
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getLeftCurlyBracketKeyword_8_1()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__SoftwareComponent__Group_8__1__Impl16039); 
+             after(grammarAccess.getSoftwareComponentAccess().getLeftCurlyBracketKeyword_8_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_8__1__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_8__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7972:1: rule__SoftwareComponent__Group_8__2 : rule__SoftwareComponent__Group_8__2__Impl rule__SoftwareComponent__Group_8__3 ;
+    public final void rule__SoftwareComponent__Group_8__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7976:1: ( rule__SoftwareComponent__Group_8__2__Impl rule__SoftwareComponent__Group_8__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7977:2: rule__SoftwareComponent__Group_8__2__Impl rule__SoftwareComponent__Group_8__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_8__2__Impl_in_rule__SoftwareComponent__Group_8__216070);
+            rule__SoftwareComponent__Group_8__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_8__3_in_rule__SoftwareComponent__Group_8__216073);
+            rule__SoftwareComponent__Group_8__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_8__2"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_8__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7984:1: rule__SoftwareComponent__Group_8__2__Impl : ( ( rule__SoftwareComponent__TrafficSourcesAssignment_8_2 ) ) ;
+    public final void rule__SoftwareComponent__Group_8__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7988:1: ( ( ( rule__SoftwareComponent__TrafficSourcesAssignment_8_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7989:1: ( ( rule__SoftwareComponent__TrafficSourcesAssignment_8_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7989:1: ( ( rule__SoftwareComponent__TrafficSourcesAssignment_8_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7990:1: ( rule__SoftwareComponent__TrafficSourcesAssignment_8_2 )
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesAssignment_8_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7991:1: ( rule__SoftwareComponent__TrafficSourcesAssignment_8_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:7991:2: rule__SoftwareComponent__TrafficSourcesAssignment_8_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__TrafficSourcesAssignment_8_2_in_rule__SoftwareComponent__Group_8__2__Impl16100);
+            rule__SoftwareComponent__TrafficSourcesAssignment_8_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesAssignment_8_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_8__2__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_8__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8001:1: rule__SoftwareComponent__Group_8__3 : rule__SoftwareComponent__Group_8__3__Impl rule__SoftwareComponent__Group_8__4 ;
+    public final void rule__SoftwareComponent__Group_8__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8005:1: ( rule__SoftwareComponent__Group_8__3__Impl rule__SoftwareComponent__Group_8__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8006:2: rule__SoftwareComponent__Group_8__3__Impl rule__SoftwareComponent__Group_8__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_8__3__Impl_in_rule__SoftwareComponent__Group_8__316130);
+            rule__SoftwareComponent__Group_8__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_8__4_in_rule__SoftwareComponent__Group_8__316133);
+            rule__SoftwareComponent__Group_8__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_8__3"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_8__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8013:1: rule__SoftwareComponent__Group_8__3__Impl : ( ( rule__SoftwareComponent__Group_8_3__0 )* ) ;
+    public final void rule__SoftwareComponent__Group_8__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8017:1: ( ( ( rule__SoftwareComponent__Group_8_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8018:1: ( ( rule__SoftwareComponent__Group_8_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8018:1: ( ( rule__SoftwareComponent__Group_8_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8019:1: ( rule__SoftwareComponent__Group_8_3__0 )*
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getGroup_8_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8020:1: ( rule__SoftwareComponent__Group_8_3__0 )*
+            loop34:
+            do {
+                int alt34=2;
+                int LA34_0 = input.LA(1);
+
+                if ( (LA34_0==31) ) {
+                    alt34=1;
+                }
+
+
+                switch (alt34) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8020:2: rule__SoftwareComponent__Group_8_3__0
+            	    {
+            	    pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_8_3__0_in_rule__SoftwareComponent__Group_8__3__Impl16160);
+            	    rule__SoftwareComponent__Group_8_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop34;
+                }
+            } while (true);
+
+             after(grammarAccess.getSoftwareComponentAccess().getGroup_8_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_8__3__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_8__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8030:1: rule__SoftwareComponent__Group_8__4 : rule__SoftwareComponent__Group_8__4__Impl ;
+    public final void rule__SoftwareComponent__Group_8__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8034:1: ( rule__SoftwareComponent__Group_8__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8035:2: rule__SoftwareComponent__Group_8__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_8__4__Impl_in_rule__SoftwareComponent__Group_8__416191);
+            rule__SoftwareComponent__Group_8__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_8__4"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_8__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8041:1: rule__SoftwareComponent__Group_8__4__Impl : ( '}' ) ;
+    public final void rule__SoftwareComponent__Group_8__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8045:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8046:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8046:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8047:1: '}'
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getRightCurlyBracketKeyword_8_4()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__SoftwareComponent__Group_8__4__Impl16219); 
+             after(grammarAccess.getSoftwareComponentAccess().getRightCurlyBracketKeyword_8_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_8__4__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_8_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8070:1: rule__SoftwareComponent__Group_8_3__0 : rule__SoftwareComponent__Group_8_3__0__Impl rule__SoftwareComponent__Group_8_3__1 ;
+    public final void rule__SoftwareComponent__Group_8_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8074:1: ( rule__SoftwareComponent__Group_8_3__0__Impl rule__SoftwareComponent__Group_8_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8075:2: rule__SoftwareComponent__Group_8_3__0__Impl rule__SoftwareComponent__Group_8_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_8_3__0__Impl_in_rule__SoftwareComponent__Group_8_3__016260);
+            rule__SoftwareComponent__Group_8_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_8_3__1_in_rule__SoftwareComponent__Group_8_3__016263);
+            rule__SoftwareComponent__Group_8_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_8_3__0"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_8_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8082:1: rule__SoftwareComponent__Group_8_3__0__Impl : ( ',' ) ;
+    public final void rule__SoftwareComponent__Group_8_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8086:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8087:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8087:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8088:1: ','
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getCommaKeyword_8_3_0()); 
+            match(input,31,FollowSets000.FOLLOW_31_in_rule__SoftwareComponent__Group_8_3__0__Impl16291); 
+             after(grammarAccess.getSoftwareComponentAccess().getCommaKeyword_8_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_8_3__0__Impl"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_8_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8101:1: rule__SoftwareComponent__Group_8_3__1 : rule__SoftwareComponent__Group_8_3__1__Impl ;
+    public final void rule__SoftwareComponent__Group_8_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8105:1: ( rule__SoftwareComponent__Group_8_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8106:2: rule__SoftwareComponent__Group_8_3__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__Group_8_3__1__Impl_in_rule__SoftwareComponent__Group_8_3__116322);
+            rule__SoftwareComponent__Group_8_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_8_3__1"
+
+
+    // $ANTLR start "rule__SoftwareComponent__Group_8_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8112:1: rule__SoftwareComponent__Group_8_3__1__Impl : ( ( rule__SoftwareComponent__TrafficSourcesAssignment_8_3_1 ) ) ;
+    public final void rule__SoftwareComponent__Group_8_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8116:1: ( ( ( rule__SoftwareComponent__TrafficSourcesAssignment_8_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8117:1: ( ( rule__SoftwareComponent__TrafficSourcesAssignment_8_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8117:1: ( ( rule__SoftwareComponent__TrafficSourcesAssignment_8_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8118:1: ( rule__SoftwareComponent__TrafficSourcesAssignment_8_3_1 )
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesAssignment_8_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8119:1: ( rule__SoftwareComponent__TrafficSourcesAssignment_8_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8119:2: rule__SoftwareComponent__TrafficSourcesAssignment_8_3_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__SoftwareComponent__TrafficSourcesAssignment_8_3_1_in_rule__SoftwareComponent__Group_8_3__1__Impl16349);
+            rule__SoftwareComponent__TrafficSourcesAssignment_8_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesAssignment_8_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__Group_8_3__1__Impl"
+
+
+    // $ANTLR start "rule__EntityAddress__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8133:1: rule__EntityAddress__Group__0 : rule__EntityAddress__Group__0__Impl rule__EntityAddress__Group__1 ;
+    public final void rule__EntityAddress__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8137:1: ( rule__EntityAddress__Group__0__Impl rule__EntityAddress__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8138:2: rule__EntityAddress__Group__0__Impl rule__EntityAddress__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group__0__Impl_in_rule__EntityAddress__Group__016383);
+            rule__EntityAddress__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group__1_in_rule__EntityAddress__Group__016386);
+            rule__EntityAddress__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group__0"
+
+
+    // $ANTLR start "rule__EntityAddress__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8145:1: rule__EntityAddress__Group__0__Impl : ( () ) ;
+    public final void rule__EntityAddress__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8149:1: ( ( () ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8150:1: ( () )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8150:1: ( () )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8151:1: ()
+            {
+             before(grammarAccess.getEntityAddressAccess().getEntityAddressAction_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8152:1: ()
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8154:1: 
+            {
+            }
+
+             after(grammarAccess.getEntityAddressAccess().getEntityAddressAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group__0__Impl"
+
+
+    // $ANTLR start "rule__EntityAddress__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8164:1: rule__EntityAddress__Group__1 : rule__EntityAddress__Group__1__Impl rule__EntityAddress__Group__2 ;
+    public final void rule__EntityAddress__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8168:1: ( rule__EntityAddress__Group__1__Impl rule__EntityAddress__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8169:2: rule__EntityAddress__Group__1__Impl rule__EntityAddress__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group__1__Impl_in_rule__EntityAddress__Group__116444);
+            rule__EntityAddress__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group__2_in_rule__EntityAddress__Group__116447);
+            rule__EntityAddress__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group__1"
+
+
+    // $ANTLR start "rule__EntityAddress__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8176:1: rule__EntityAddress__Group__1__Impl : ( 'EntityAddress' ) ;
+    public final void rule__EntityAddress__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8180:1: ( ( 'EntityAddress' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8181:1: ( 'EntityAddress' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8181:1: ( 'EntityAddress' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8182:1: 'EntityAddress'
+            {
+             before(grammarAccess.getEntityAddressAccess().getEntityAddressKeyword_1()); 
+            match(input,69,FollowSets000.FOLLOW_69_in_rule__EntityAddress__Group__1__Impl16475); 
+             after(grammarAccess.getEntityAddressAccess().getEntityAddressKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group__1__Impl"
+
+
+    // $ANTLR start "rule__EntityAddress__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8195:1: rule__EntityAddress__Group__2 : rule__EntityAddress__Group__2__Impl rule__EntityAddress__Group__3 ;
+    public final void rule__EntityAddress__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8199:1: ( rule__EntityAddress__Group__2__Impl rule__EntityAddress__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8200:2: rule__EntityAddress__Group__2__Impl rule__EntityAddress__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group__2__Impl_in_rule__EntityAddress__Group__216506);
+            rule__EntityAddress__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group__3_in_rule__EntityAddress__Group__216509);
+            rule__EntityAddress__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group__2"
+
+
+    // $ANTLR start "rule__EntityAddress__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8207:1: rule__EntityAddress__Group__2__Impl : ( '{' ) ;
+    public final void rule__EntityAddress__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8211:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8212:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8212:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8213:1: '{'
+            {
+             before(grammarAccess.getEntityAddressAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__EntityAddress__Group__2__Impl16537); 
+             after(grammarAccess.getEntityAddressAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group__2__Impl"
+
+
+    // $ANTLR start "rule__EntityAddress__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8226:1: rule__EntityAddress__Group__3 : rule__EntityAddress__Group__3__Impl rule__EntityAddress__Group__4 ;
+    public final void rule__EntityAddress__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8230:1: ( rule__EntityAddress__Group__3__Impl rule__EntityAddress__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8231:2: rule__EntityAddress__Group__3__Impl rule__EntityAddress__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group__3__Impl_in_rule__EntityAddress__Group__316568);
+            rule__EntityAddress__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group__4_in_rule__EntityAddress__Group__316571);
+            rule__EntityAddress__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group__3"
+
+
+    // $ANTLR start "rule__EntityAddress__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8238:1: rule__EntityAddress__Group__3__Impl : ( ( rule__EntityAddress__Group_3__0 )? ) ;
+    public final void rule__EntityAddress__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8242:1: ( ( ( rule__EntityAddress__Group_3__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8243:1: ( ( rule__EntityAddress__Group_3__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8243:1: ( ( rule__EntityAddress__Group_3__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8244:1: ( rule__EntityAddress__Group_3__0 )?
+            {
+             before(grammarAccess.getEntityAddressAccess().getGroup_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8245:1: ( rule__EntityAddress__Group_3__0 )?
+            int alt35=2;
+            int LA35_0 = input.LA(1);
+
+            if ( (LA35_0==70) ) {
+                alt35=1;
+            }
+            switch (alt35) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8245:2: rule__EntityAddress__Group_3__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group_3__0_in_rule__EntityAddress__Group__3__Impl16598);
+                    rule__EntityAddress__Group_3__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEntityAddressAccess().getGroup_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group__3__Impl"
+
+
+    // $ANTLR start "rule__EntityAddress__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8255:1: rule__EntityAddress__Group__4 : rule__EntityAddress__Group__4__Impl rule__EntityAddress__Group__5 ;
+    public final void rule__EntityAddress__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8259:1: ( rule__EntityAddress__Group__4__Impl rule__EntityAddress__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8260:2: rule__EntityAddress__Group__4__Impl rule__EntityAddress__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group__4__Impl_in_rule__EntityAddress__Group__416629);
+            rule__EntityAddress__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group__5_in_rule__EntityAddress__Group__416632);
+            rule__EntityAddress__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group__4"
+
+
+    // $ANTLR start "rule__EntityAddress__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8267:1: rule__EntityAddress__Group__4__Impl : ( ( rule__EntityAddress__Group_4__0 )? ) ;
+    public final void rule__EntityAddress__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8271:1: ( ( ( rule__EntityAddress__Group_4__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8272:1: ( ( rule__EntityAddress__Group_4__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8272:1: ( ( rule__EntityAddress__Group_4__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8273:1: ( rule__EntityAddress__Group_4__0 )?
+            {
+             before(grammarAccess.getEntityAddressAccess().getGroup_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8274:1: ( rule__EntityAddress__Group_4__0 )?
+            int alt36=2;
+            int LA36_0 = input.LA(1);
+
+            if ( (LA36_0==71) ) {
+                alt36=1;
+            }
+            switch (alt36) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8274:2: rule__EntityAddress__Group_4__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group_4__0_in_rule__EntityAddress__Group__4__Impl16659);
+                    rule__EntityAddress__Group_4__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEntityAddressAccess().getGroup_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group__4__Impl"
+
+
+    // $ANTLR start "rule__EntityAddress__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8284:1: rule__EntityAddress__Group__5 : rule__EntityAddress__Group__5__Impl ;
+    public final void rule__EntityAddress__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8288:1: ( rule__EntityAddress__Group__5__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8289:2: rule__EntityAddress__Group__5__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group__5__Impl_in_rule__EntityAddress__Group__516690);
+            rule__EntityAddress__Group__5__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group__5"
+
+
+    // $ANTLR start "rule__EntityAddress__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8295:1: rule__EntityAddress__Group__5__Impl : ( '}' ) ;
+    public final void rule__EntityAddress__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8299:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8300:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8300:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8301:1: '}'
+            {
+             before(grammarAccess.getEntityAddressAccess().getRightCurlyBracketKeyword_5()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__EntityAddress__Group__5__Impl16718); 
+             after(grammarAccess.getEntityAddressAccess().getRightCurlyBracketKeyword_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group__5__Impl"
+
+
+    // $ANTLR start "rule__EntityAddress__Group_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8326:1: rule__EntityAddress__Group_3__0 : rule__EntityAddress__Group_3__0__Impl rule__EntityAddress__Group_3__1 ;
+    public final void rule__EntityAddress__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8330:1: ( rule__EntityAddress__Group_3__0__Impl rule__EntityAddress__Group_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8331:2: rule__EntityAddress__Group_3__0__Impl rule__EntityAddress__Group_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group_3__0__Impl_in_rule__EntityAddress__Group_3__016761);
+            rule__EntityAddress__Group_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group_3__1_in_rule__EntityAddress__Group_3__016764);
+            rule__EntityAddress__Group_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group_3__0"
+
+
+    // $ANTLR start "rule__EntityAddress__Group_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8338:1: rule__EntityAddress__Group_3__0__Impl : ( 'address' ) ;
+    public final void rule__EntityAddress__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8342:1: ( ( 'address' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8343:1: ( 'address' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8343:1: ( 'address' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8344:1: 'address'
+            {
+             before(grammarAccess.getEntityAddressAccess().getAddressKeyword_3_0()); 
+            match(input,70,FollowSets000.FOLLOW_70_in_rule__EntityAddress__Group_3__0__Impl16792); 
+             after(grammarAccess.getEntityAddressAccess().getAddressKeyword_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__EntityAddress__Group_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8357:1: rule__EntityAddress__Group_3__1 : rule__EntityAddress__Group_3__1__Impl ;
+    public final void rule__EntityAddress__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8361:1: ( rule__EntityAddress__Group_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8362:2: rule__EntityAddress__Group_3__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group_3__1__Impl_in_rule__EntityAddress__Group_3__116823);
+            rule__EntityAddress__Group_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group_3__1"
+
+
+    // $ANTLR start "rule__EntityAddress__Group_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8368:1: rule__EntityAddress__Group_3__1__Impl : ( ( rule__EntityAddress__AddressAssignment_3_1 ) ) ;
+    public final void rule__EntityAddress__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8372:1: ( ( ( rule__EntityAddress__AddressAssignment_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8373:1: ( ( rule__EntityAddress__AddressAssignment_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8373:1: ( ( rule__EntityAddress__AddressAssignment_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8374:1: ( rule__EntityAddress__AddressAssignment_3_1 )
+            {
+             before(grammarAccess.getEntityAddressAccess().getAddressAssignment_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8375:1: ( rule__EntityAddress__AddressAssignment_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8375:2: rule__EntityAddress__AddressAssignment_3_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__AddressAssignment_3_1_in_rule__EntityAddress__Group_3__1__Impl16850);
+            rule__EntityAddress__AddressAssignment_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEntityAddressAccess().getAddressAssignment_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__EntityAddress__Group_4__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8389:1: rule__EntityAddress__Group_4__0 : rule__EntityAddress__Group_4__0__Impl rule__EntityAddress__Group_4__1 ;
+    public final void rule__EntityAddress__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8393:1: ( rule__EntityAddress__Group_4__0__Impl rule__EntityAddress__Group_4__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8394:2: rule__EntityAddress__Group_4__0__Impl rule__EntityAddress__Group_4__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group_4__0__Impl_in_rule__EntityAddress__Group_4__016884);
+            rule__EntityAddress__Group_4__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group_4__1_in_rule__EntityAddress__Group_4__016887);
+            rule__EntityAddress__Group_4__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group_4__0"
+
+
+    // $ANTLR start "rule__EntityAddress__Group_4__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8401:1: rule__EntityAddress__Group_4__0__Impl : ( 'addressGivenBy' ) ;
+    public final void rule__EntityAddress__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8405:1: ( ( 'addressGivenBy' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8406:1: ( 'addressGivenBy' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8406:1: ( 'addressGivenBy' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8407:1: 'addressGivenBy'
+            {
+             before(grammarAccess.getEntityAddressAccess().getAddressGivenByKeyword_4_0()); 
+            match(input,71,FollowSets000.FOLLOW_71_in_rule__EntityAddress__Group_4__0__Impl16915); 
+             after(grammarAccess.getEntityAddressAccess().getAddressGivenByKeyword_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__EntityAddress__Group_4__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8420:1: rule__EntityAddress__Group_4__1 : rule__EntityAddress__Group_4__1__Impl ;
+    public final void rule__EntityAddress__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8424:1: ( rule__EntityAddress__Group_4__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8425:2: rule__EntityAddress__Group_4__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__Group_4__1__Impl_in_rule__EntityAddress__Group_4__116946);
+            rule__EntityAddress__Group_4__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group_4__1"
+
+
+    // $ANTLR start "rule__EntityAddress__Group_4__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8431:1: rule__EntityAddress__Group_4__1__Impl : ( ( rule__EntityAddress__AddressGivenByAssignment_4_1 ) ) ;
+    public final void rule__EntityAddress__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8435:1: ( ( ( rule__EntityAddress__AddressGivenByAssignment_4_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8436:1: ( ( rule__EntityAddress__AddressGivenByAssignment_4_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8436:1: ( ( rule__EntityAddress__AddressGivenByAssignment_4_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8437:1: ( rule__EntityAddress__AddressGivenByAssignment_4_1 )
+            {
+             before(grammarAccess.getEntityAddressAccess().getAddressGivenByAssignment_4_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8438:1: ( rule__EntityAddress__AddressGivenByAssignment_4_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8438:2: rule__EntityAddress__AddressGivenByAssignment_4_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__EntityAddress__AddressGivenByAssignment_4_1_in_rule__EntityAddress__Group_4__1__Impl16973);
+            rule__EntityAddress__AddressGivenByAssignment_4_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEntityAddressAccess().getAddressGivenByAssignment_4_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8452:1: rule__ONOFFFlow__Group__0 : rule__ONOFFFlow__Group__0__Impl rule__ONOFFFlow__Group__1 ;
+    public final void rule__ONOFFFlow__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8456:1: ( rule__ONOFFFlow__Group__0__Impl rule__ONOFFFlow__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8457:2: rule__ONOFFFlow__Group__0__Impl rule__ONOFFFlow__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__0__Impl_in_rule__ONOFFFlow__Group__017007);
+            rule__ONOFFFlow__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__1_in_rule__ONOFFFlow__Group__017010);
+            rule__ONOFFFlow__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__0"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8464:1: rule__ONOFFFlow__Group__0__Impl : ( ( rule__ONOFFFlow__StartStateAssignment_0 ) ) ;
+    public final void rule__ONOFFFlow__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8468:1: ( ( ( rule__ONOFFFlow__StartStateAssignment_0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8469:1: ( ( rule__ONOFFFlow__StartStateAssignment_0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8469:1: ( ( rule__ONOFFFlow__StartStateAssignment_0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8470:1: ( rule__ONOFFFlow__StartStateAssignment_0 )
+            {
+             before(grammarAccess.getONOFFFlowAccess().getStartStateAssignment_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8471:1: ( rule__ONOFFFlow__StartStateAssignment_0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8471:2: rule__ONOFFFlow__StartStateAssignment_0
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__StartStateAssignment_0_in_rule__ONOFFFlow__Group__0__Impl17037);
+            rule__ONOFFFlow__StartStateAssignment_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getStartStateAssignment_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8481:1: rule__ONOFFFlow__Group__1 : rule__ONOFFFlow__Group__1__Impl rule__ONOFFFlow__Group__2 ;
+    public final void rule__ONOFFFlow__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8485:1: ( rule__ONOFFFlow__Group__1__Impl rule__ONOFFFlow__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8486:2: rule__ONOFFFlow__Group__1__Impl rule__ONOFFFlow__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__1__Impl_in_rule__ONOFFFlow__Group__117067);
+            rule__ONOFFFlow__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__2_in_rule__ONOFFFlow__Group__117070);
+            rule__ONOFFFlow__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__1"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8493:1: rule__ONOFFFlow__Group__1__Impl : ( 'ONOFFFlow' ) ;
+    public final void rule__ONOFFFlow__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8497:1: ( ( 'ONOFFFlow' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8498:1: ( 'ONOFFFlow' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8498:1: ( 'ONOFFFlow' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8499:1: 'ONOFFFlow'
+            {
+             before(grammarAccess.getONOFFFlowAccess().getONOFFFlowKeyword_1()); 
+            match(input,72,FollowSets000.FOLLOW_72_in_rule__ONOFFFlow__Group__1__Impl17098); 
+             after(grammarAccess.getONOFFFlowAccess().getONOFFFlowKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8512:1: rule__ONOFFFlow__Group__2 : rule__ONOFFFlow__Group__2__Impl rule__ONOFFFlow__Group__3 ;
+    public final void rule__ONOFFFlow__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8516:1: ( rule__ONOFFFlow__Group__2__Impl rule__ONOFFFlow__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8517:2: rule__ONOFFFlow__Group__2__Impl rule__ONOFFFlow__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__2__Impl_in_rule__ONOFFFlow__Group__217129);
+            rule__ONOFFFlow__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__3_in_rule__ONOFFFlow__Group__217132);
+            rule__ONOFFFlow__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__2"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8524:1: rule__ONOFFFlow__Group__2__Impl : ( ( rule__ONOFFFlow__IdAssignment_2 ) ) ;
+    public final void rule__ONOFFFlow__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8528:1: ( ( ( rule__ONOFFFlow__IdAssignment_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8529:1: ( ( rule__ONOFFFlow__IdAssignment_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8529:1: ( ( rule__ONOFFFlow__IdAssignment_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8530:1: ( rule__ONOFFFlow__IdAssignment_2 )
+            {
+             before(grammarAccess.getONOFFFlowAccess().getIdAssignment_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8531:1: ( rule__ONOFFFlow__IdAssignment_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8531:2: rule__ONOFFFlow__IdAssignment_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__IdAssignment_2_in_rule__ONOFFFlow__Group__2__Impl17159);
+            rule__ONOFFFlow__IdAssignment_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getIdAssignment_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8541:1: rule__ONOFFFlow__Group__3 : rule__ONOFFFlow__Group__3__Impl rule__ONOFFFlow__Group__4 ;
+    public final void rule__ONOFFFlow__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8545:1: ( rule__ONOFFFlow__Group__3__Impl rule__ONOFFFlow__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8546:2: rule__ONOFFFlow__Group__3__Impl rule__ONOFFFlow__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__3__Impl_in_rule__ONOFFFlow__Group__317189);
+            rule__ONOFFFlow__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__4_in_rule__ONOFFFlow__Group__317192);
+            rule__ONOFFFlow__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__3"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8553:1: rule__ONOFFFlow__Group__3__Impl : ( '{' ) ;
+    public final void rule__ONOFFFlow__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8557:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8558:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8558:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8559:1: '{'
+            {
+             before(grammarAccess.getONOFFFlowAccess().getLeftCurlyBracketKeyword_3()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__ONOFFFlow__Group__3__Impl17220); 
+             after(grammarAccess.getONOFFFlowAccess().getLeftCurlyBracketKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8572:1: rule__ONOFFFlow__Group__4 : rule__ONOFFFlow__Group__4__Impl rule__ONOFFFlow__Group__5 ;
+    public final void rule__ONOFFFlow__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8576:1: ( rule__ONOFFFlow__Group__4__Impl rule__ONOFFFlow__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8577:2: rule__ONOFFFlow__Group__4__Impl rule__ONOFFFlow__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__4__Impl_in_rule__ONOFFFlow__Group__417251);
+            rule__ONOFFFlow__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__5_in_rule__ONOFFFlow__Group__417254);
+            rule__ONOFFFlow__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__4"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8584:1: rule__ONOFFFlow__Group__4__Impl : ( 'name' ) ;
+    public final void rule__ONOFFFlow__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8588:1: ( ( 'name' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8589:1: ( 'name' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8589:1: ( 'name' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8590:1: 'name'
+            {
+             before(grammarAccess.getONOFFFlowAccess().getNameKeyword_4()); 
+            match(input,65,FollowSets000.FOLLOW_65_in_rule__ONOFFFlow__Group__4__Impl17282); 
+             after(grammarAccess.getONOFFFlowAccess().getNameKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8603:1: rule__ONOFFFlow__Group__5 : rule__ONOFFFlow__Group__5__Impl rule__ONOFFFlow__Group__6 ;
+    public final void rule__ONOFFFlow__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8607:1: ( rule__ONOFFFlow__Group__5__Impl rule__ONOFFFlow__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8608:2: rule__ONOFFFlow__Group__5__Impl rule__ONOFFFlow__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__5__Impl_in_rule__ONOFFFlow__Group__517313);
+            rule__ONOFFFlow__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__6_in_rule__ONOFFFlow__Group__517316);
+            rule__ONOFFFlow__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__5"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8615:1: rule__ONOFFFlow__Group__5__Impl : ( ( rule__ONOFFFlow__NameAssignment_5 ) ) ;
+    public final void rule__ONOFFFlow__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8619:1: ( ( ( rule__ONOFFFlow__NameAssignment_5 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8620:1: ( ( rule__ONOFFFlow__NameAssignment_5 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8620:1: ( ( rule__ONOFFFlow__NameAssignment_5 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8621:1: ( rule__ONOFFFlow__NameAssignment_5 )
+            {
+             before(grammarAccess.getONOFFFlowAccess().getNameAssignment_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8622:1: ( rule__ONOFFFlow__NameAssignment_5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8622:2: rule__ONOFFFlow__NameAssignment_5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__NameAssignment_5_in_rule__ONOFFFlow__Group__5__Impl17343);
+            rule__ONOFFFlow__NameAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getNameAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__5__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8632:1: rule__ONOFFFlow__Group__6 : rule__ONOFFFlow__Group__6__Impl rule__ONOFFFlow__Group__7 ;
+    public final void rule__ONOFFFlow__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8636:1: ( rule__ONOFFFlow__Group__6__Impl rule__ONOFFFlow__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8637:2: rule__ONOFFFlow__Group__6__Impl rule__ONOFFFlow__Group__7
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__6__Impl_in_rule__ONOFFFlow__Group__617373);
+            rule__ONOFFFlow__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__7_in_rule__ONOFFFlow__Group__617376);
+            rule__ONOFFFlow__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__6"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8644:1: rule__ONOFFFlow__Group__6__Impl : ( ( rule__ONOFFFlow__Group_6__0 )? ) ;
+    public final void rule__ONOFFFlow__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8648:1: ( ( ( rule__ONOFFFlow__Group_6__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8649:1: ( ( rule__ONOFFFlow__Group_6__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8649:1: ( ( rule__ONOFFFlow__Group_6__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8650:1: ( rule__ONOFFFlow__Group_6__0 )?
+            {
+             before(grammarAccess.getONOFFFlowAccess().getGroup_6()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8651:1: ( rule__ONOFFFlow__Group_6__0 )?
+            int alt37=2;
+            int LA37_0 = input.LA(1);
+
+            if ( (LA37_0==67) ) {
+                alt37=1;
+            }
+            switch (alt37) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8651:2: rule__ONOFFFlow__Group_6__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_6__0_in_rule__ONOFFFlow__Group__6__Impl17403);
+                    rule__ONOFFFlow__Group_6__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getGroup_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__6__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8661:1: rule__ONOFFFlow__Group__7 : rule__ONOFFFlow__Group__7__Impl rule__ONOFFFlow__Group__8 ;
+    public final void rule__ONOFFFlow__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8665:1: ( rule__ONOFFFlow__Group__7__Impl rule__ONOFFFlow__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8666:2: rule__ONOFFFlow__Group__7__Impl rule__ONOFFFlow__Group__8
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__7__Impl_in_rule__ONOFFFlow__Group__717434);
+            rule__ONOFFFlow__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__8_in_rule__ONOFFFlow__Group__717437);
+            rule__ONOFFFlow__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__7"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8673:1: rule__ONOFFFlow__Group__7__Impl : ( ( rule__ONOFFFlow__Group_7__0 )? ) ;
+    public final void rule__ONOFFFlow__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8677:1: ( ( ( rule__ONOFFFlow__Group_7__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8678:1: ( ( rule__ONOFFFlow__Group_7__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8678:1: ( ( rule__ONOFFFlow__Group_7__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8679:1: ( rule__ONOFFFlow__Group_7__0 )?
+            {
+             before(grammarAccess.getONOFFFlowAccess().getGroup_7()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8680:1: ( rule__ONOFFFlow__Group_7__0 )?
+            int alt38=2;
+            int LA38_0 = input.LA(1);
+
+            if ( (LA38_0==77) ) {
+                alt38=1;
+            }
+            switch (alt38) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8680:2: rule__ONOFFFlow__Group_7__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_7__0_in_rule__ONOFFFlow__Group__7__Impl17464);
+                    rule__ONOFFFlow__Group_7__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getGroup_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__7__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8690:1: rule__ONOFFFlow__Group__8 : rule__ONOFFFlow__Group__8__Impl rule__ONOFFFlow__Group__9 ;
+    public final void rule__ONOFFFlow__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8694:1: ( rule__ONOFFFlow__Group__8__Impl rule__ONOFFFlow__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8695:2: rule__ONOFFFlow__Group__8__Impl rule__ONOFFFlow__Group__9
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__8__Impl_in_rule__ONOFFFlow__Group__817495);
+            rule__ONOFFFlow__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__9_in_rule__ONOFFFlow__Group__817498);
+            rule__ONOFFFlow__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__8"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8702:1: rule__ONOFFFlow__Group__8__Impl : ( ( rule__ONOFFFlow__Group_8__0 )? ) ;
+    public final void rule__ONOFFFlow__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8706:1: ( ( ( rule__ONOFFFlow__Group_8__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8707:1: ( ( rule__ONOFFFlow__Group_8__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8707:1: ( ( rule__ONOFFFlow__Group_8__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8708:1: ( rule__ONOFFFlow__Group_8__0 )?
+            {
+             before(grammarAccess.getONOFFFlowAccess().getGroup_8()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8709:1: ( rule__ONOFFFlow__Group_8__0 )?
+            int alt39=2;
+            int LA39_0 = input.LA(1);
+
+            if ( (LA39_0==78) ) {
+                alt39=1;
+            }
+            switch (alt39) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8709:2: rule__ONOFFFlow__Group_8__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_8__0_in_rule__ONOFFFlow__Group__8__Impl17525);
+                    rule__ONOFFFlow__Group_8__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getGroup_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__8__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8719:1: rule__ONOFFFlow__Group__9 : rule__ONOFFFlow__Group__9__Impl rule__ONOFFFlow__Group__10 ;
+    public final void rule__ONOFFFlow__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8723:1: ( rule__ONOFFFlow__Group__9__Impl rule__ONOFFFlow__Group__10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8724:2: rule__ONOFFFlow__Group__9__Impl rule__ONOFFFlow__Group__10
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__9__Impl_in_rule__ONOFFFlow__Group__917556);
+            rule__ONOFFFlow__Group__9__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__10_in_rule__ONOFFFlow__Group__917559);
+            rule__ONOFFFlow__Group__10();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__9"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8731:1: rule__ONOFFFlow__Group__9__Impl : ( ( rule__ONOFFFlow__Group_9__0 )? ) ;
+    public final void rule__ONOFFFlow__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8735:1: ( ( ( rule__ONOFFFlow__Group_9__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8736:1: ( ( rule__ONOFFFlow__Group_9__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8736:1: ( ( rule__ONOFFFlow__Group_9__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8737:1: ( rule__ONOFFFlow__Group_9__0 )?
+            {
+             before(grammarAccess.getONOFFFlowAccess().getGroup_9()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8738:1: ( rule__ONOFFFlow__Group_9__0 )?
+            int alt40=2;
+            int LA40_0 = input.LA(1);
+
+            if ( (LA40_0==79) ) {
+                alt40=1;
+            }
+            switch (alt40) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8738:2: rule__ONOFFFlow__Group_9__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_9__0_in_rule__ONOFFFlow__Group__9__Impl17586);
+                    rule__ONOFFFlow__Group_9__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getGroup_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__9__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8748:1: rule__ONOFFFlow__Group__10 : rule__ONOFFFlow__Group__10__Impl rule__ONOFFFlow__Group__11 ;
+    public final void rule__ONOFFFlow__Group__10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8752:1: ( rule__ONOFFFlow__Group__10__Impl rule__ONOFFFlow__Group__11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8753:2: rule__ONOFFFlow__Group__10__Impl rule__ONOFFFlow__Group__11
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__10__Impl_in_rule__ONOFFFlow__Group__1017617);
+            rule__ONOFFFlow__Group__10__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__11_in_rule__ONOFFFlow__Group__1017620);
+            rule__ONOFFFlow__Group__11();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__10"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__10__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8760:1: rule__ONOFFFlow__Group__10__Impl : ( 'ONstateIAT' ) ;
+    public final void rule__ONOFFFlow__Group__10__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8764:1: ( ( 'ONstateIAT' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8765:1: ( 'ONstateIAT' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8765:1: ( 'ONstateIAT' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8766:1: 'ONstateIAT'
+            {
+             before(grammarAccess.getONOFFFlowAccess().getONstateIATKeyword_10()); 
+            match(input,73,FollowSets000.FOLLOW_73_in_rule__ONOFFFlow__Group__10__Impl17648); 
+             after(grammarAccess.getONOFFFlowAccess().getONstateIATKeyword_10()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__10__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8779:1: rule__ONOFFFlow__Group__11 : rule__ONOFFFlow__Group__11__Impl rule__ONOFFFlow__Group__12 ;
+    public final void rule__ONOFFFlow__Group__11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8783:1: ( rule__ONOFFFlow__Group__11__Impl rule__ONOFFFlow__Group__12 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8784:2: rule__ONOFFFlow__Group__11__Impl rule__ONOFFFlow__Group__12
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__11__Impl_in_rule__ONOFFFlow__Group__1117679);
+            rule__ONOFFFlow__Group__11__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__12_in_rule__ONOFFFlow__Group__1117682);
+            rule__ONOFFFlow__Group__12();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__11"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__11__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8791:1: rule__ONOFFFlow__Group__11__Impl : ( ( rule__ONOFFFlow__ONstateIATAssignment_11 ) ) ;
+    public final void rule__ONOFFFlow__Group__11__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8795:1: ( ( ( rule__ONOFFFlow__ONstateIATAssignment_11 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8796:1: ( ( rule__ONOFFFlow__ONstateIATAssignment_11 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8796:1: ( ( rule__ONOFFFlow__ONstateIATAssignment_11 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8797:1: ( rule__ONOFFFlow__ONstateIATAssignment_11 )
+            {
+             before(grammarAccess.getONOFFFlowAccess().getONstateIATAssignment_11()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8798:1: ( rule__ONOFFFlow__ONstateIATAssignment_11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8798:2: rule__ONOFFFlow__ONstateIATAssignment_11
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__ONstateIATAssignment_11_in_rule__ONOFFFlow__Group__11__Impl17709);
+            rule__ONOFFFlow__ONstateIATAssignment_11();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getONstateIATAssignment_11()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__11__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__12"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8808:1: rule__ONOFFFlow__Group__12 : rule__ONOFFFlow__Group__12__Impl rule__ONOFFFlow__Group__13 ;
+    public final void rule__ONOFFFlow__Group__12() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8812:1: ( rule__ONOFFFlow__Group__12__Impl rule__ONOFFFlow__Group__13 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8813:2: rule__ONOFFFlow__Group__12__Impl rule__ONOFFFlow__Group__13
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__12__Impl_in_rule__ONOFFFlow__Group__1217739);
+            rule__ONOFFFlow__Group__12__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__13_in_rule__ONOFFFlow__Group__1217742);
+            rule__ONOFFFlow__Group__13();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__12"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__12__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8820:1: rule__ONOFFFlow__Group__12__Impl : ( 'ONstateDuration' ) ;
+    public final void rule__ONOFFFlow__Group__12__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8824:1: ( ( 'ONstateDuration' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8825:1: ( 'ONstateDuration' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8825:1: ( 'ONstateDuration' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8826:1: 'ONstateDuration'
+            {
+             before(grammarAccess.getONOFFFlowAccess().getONstateDurationKeyword_12()); 
+            match(input,74,FollowSets000.FOLLOW_74_in_rule__ONOFFFlow__Group__12__Impl17770); 
+             after(grammarAccess.getONOFFFlowAccess().getONstateDurationKeyword_12()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__12__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__13"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8839:1: rule__ONOFFFlow__Group__13 : rule__ONOFFFlow__Group__13__Impl rule__ONOFFFlow__Group__14 ;
+    public final void rule__ONOFFFlow__Group__13() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8843:1: ( rule__ONOFFFlow__Group__13__Impl rule__ONOFFFlow__Group__14 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8844:2: rule__ONOFFFlow__Group__13__Impl rule__ONOFFFlow__Group__14
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__13__Impl_in_rule__ONOFFFlow__Group__1317801);
+            rule__ONOFFFlow__Group__13__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__14_in_rule__ONOFFFlow__Group__1317804);
+            rule__ONOFFFlow__Group__14();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__13"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__13__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8851:1: rule__ONOFFFlow__Group__13__Impl : ( ( rule__ONOFFFlow__ONstateDurationAssignment_13 ) ) ;
+    public final void rule__ONOFFFlow__Group__13__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8855:1: ( ( ( rule__ONOFFFlow__ONstateDurationAssignment_13 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8856:1: ( ( rule__ONOFFFlow__ONstateDurationAssignment_13 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8856:1: ( ( rule__ONOFFFlow__ONstateDurationAssignment_13 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8857:1: ( rule__ONOFFFlow__ONstateDurationAssignment_13 )
+            {
+             before(grammarAccess.getONOFFFlowAccess().getONstateDurationAssignment_13()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8858:1: ( rule__ONOFFFlow__ONstateDurationAssignment_13 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8858:2: rule__ONOFFFlow__ONstateDurationAssignment_13
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__ONstateDurationAssignment_13_in_rule__ONOFFFlow__Group__13__Impl17831);
+            rule__ONOFFFlow__ONstateDurationAssignment_13();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getONstateDurationAssignment_13()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__13__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__14"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8868:1: rule__ONOFFFlow__Group__14 : rule__ONOFFFlow__Group__14__Impl rule__ONOFFFlow__Group__15 ;
+    public final void rule__ONOFFFlow__Group__14() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8872:1: ( rule__ONOFFFlow__Group__14__Impl rule__ONOFFFlow__Group__15 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8873:2: rule__ONOFFFlow__Group__14__Impl rule__ONOFFFlow__Group__15
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__14__Impl_in_rule__ONOFFFlow__Group__1417861);
+            rule__ONOFFFlow__Group__14__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__15_in_rule__ONOFFFlow__Group__1417864);
+            rule__ONOFFFlow__Group__15();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__14"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__14__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8880:1: rule__ONOFFFlow__Group__14__Impl : ( 'OFFstateDuration' ) ;
+    public final void rule__ONOFFFlow__Group__14__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8884:1: ( ( 'OFFstateDuration' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8885:1: ( 'OFFstateDuration' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8885:1: ( 'OFFstateDuration' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8886:1: 'OFFstateDuration'
+            {
+             before(grammarAccess.getONOFFFlowAccess().getOFFstateDurationKeyword_14()); 
+            match(input,75,FollowSets000.FOLLOW_75_in_rule__ONOFFFlow__Group__14__Impl17892); 
+             after(grammarAccess.getONOFFFlowAccess().getOFFstateDurationKeyword_14()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__14__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__15"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8899:1: rule__ONOFFFlow__Group__15 : rule__ONOFFFlow__Group__15__Impl rule__ONOFFFlow__Group__16 ;
+    public final void rule__ONOFFFlow__Group__15() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8903:1: ( rule__ONOFFFlow__Group__15__Impl rule__ONOFFFlow__Group__16 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8904:2: rule__ONOFFFlow__Group__15__Impl rule__ONOFFFlow__Group__16
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__15__Impl_in_rule__ONOFFFlow__Group__1517923);
+            rule__ONOFFFlow__Group__15__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__16_in_rule__ONOFFFlow__Group__1517926);
+            rule__ONOFFFlow__Group__16();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__15"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__15__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8911:1: rule__ONOFFFlow__Group__15__Impl : ( ( rule__ONOFFFlow__OFFstateDurationAssignment_15 ) ) ;
+    public final void rule__ONOFFFlow__Group__15__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8915:1: ( ( ( rule__ONOFFFlow__OFFstateDurationAssignment_15 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8916:1: ( ( rule__ONOFFFlow__OFFstateDurationAssignment_15 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8916:1: ( ( rule__ONOFFFlow__OFFstateDurationAssignment_15 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8917:1: ( rule__ONOFFFlow__OFFstateDurationAssignment_15 )
+            {
+             before(grammarAccess.getONOFFFlowAccess().getOFFstateDurationAssignment_15()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8918:1: ( rule__ONOFFFlow__OFFstateDurationAssignment_15 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8918:2: rule__ONOFFFlow__OFFstateDurationAssignment_15
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__OFFstateDurationAssignment_15_in_rule__ONOFFFlow__Group__15__Impl17953);
+            rule__ONOFFFlow__OFFstateDurationAssignment_15();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getOFFstateDurationAssignment_15()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__15__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__16"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8928:1: rule__ONOFFFlow__Group__16 : rule__ONOFFFlow__Group__16__Impl rule__ONOFFFlow__Group__17 ;
+    public final void rule__ONOFFFlow__Group__16() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8932:1: ( rule__ONOFFFlow__Group__16__Impl rule__ONOFFFlow__Group__17 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8933:2: rule__ONOFFFlow__Group__16__Impl rule__ONOFFFlow__Group__17
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__16__Impl_in_rule__ONOFFFlow__Group__1617983);
+            rule__ONOFFFlow__Group__16__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__17_in_rule__ONOFFFlow__Group__1617986);
+            rule__ONOFFFlow__Group__17();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__16"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__16__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8940:1: rule__ONOFFFlow__Group__16__Impl : ( 'packetLength' ) ;
+    public final void rule__ONOFFFlow__Group__16__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8944:1: ( ( 'packetLength' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8945:1: ( 'packetLength' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8945:1: ( 'packetLength' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8946:1: 'packetLength'
+            {
+             before(grammarAccess.getONOFFFlowAccess().getPacketLengthKeyword_16()); 
+            match(input,76,FollowSets000.FOLLOW_76_in_rule__ONOFFFlow__Group__16__Impl18014); 
+             after(grammarAccess.getONOFFFlowAccess().getPacketLengthKeyword_16()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__16__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__17"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8959:1: rule__ONOFFFlow__Group__17 : rule__ONOFFFlow__Group__17__Impl rule__ONOFFFlow__Group__18 ;
+    public final void rule__ONOFFFlow__Group__17() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8963:1: ( rule__ONOFFFlow__Group__17__Impl rule__ONOFFFlow__Group__18 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8964:2: rule__ONOFFFlow__Group__17__Impl rule__ONOFFFlow__Group__18
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__17__Impl_in_rule__ONOFFFlow__Group__1718045);
+            rule__ONOFFFlow__Group__17__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__18_in_rule__ONOFFFlow__Group__1718048);
+            rule__ONOFFFlow__Group__18();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__17"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__17__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8971:1: rule__ONOFFFlow__Group__17__Impl : ( ( rule__ONOFFFlow__PacketLengthAssignment_17 ) ) ;
+    public final void rule__ONOFFFlow__Group__17__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8975:1: ( ( ( rule__ONOFFFlow__PacketLengthAssignment_17 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8976:1: ( ( rule__ONOFFFlow__PacketLengthAssignment_17 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8976:1: ( ( rule__ONOFFFlow__PacketLengthAssignment_17 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8977:1: ( rule__ONOFFFlow__PacketLengthAssignment_17 )
+            {
+             before(grammarAccess.getONOFFFlowAccess().getPacketLengthAssignment_17()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8978:1: ( rule__ONOFFFlow__PacketLengthAssignment_17 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8978:2: rule__ONOFFFlow__PacketLengthAssignment_17
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__PacketLengthAssignment_17_in_rule__ONOFFFlow__Group__17__Impl18075);
+            rule__ONOFFFlow__PacketLengthAssignment_17();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getPacketLengthAssignment_17()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__17__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__18"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8988:1: rule__ONOFFFlow__Group__18 : rule__ONOFFFlow__Group__18__Impl ;
+    public final void rule__ONOFFFlow__Group__18() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8992:1: ( rule__ONOFFFlow__Group__18__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8993:2: rule__ONOFFFlow__Group__18__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group__18__Impl_in_rule__ONOFFFlow__Group__1818105);
+            rule__ONOFFFlow__Group__18__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__18"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group__18__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:8999:1: rule__ONOFFFlow__Group__18__Impl : ( '}' ) ;
+    public final void rule__ONOFFFlow__Group__18__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9003:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9004:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9004:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9005:1: '}'
+            {
+             before(grammarAccess.getONOFFFlowAccess().getRightCurlyBracketKeyword_18()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__ONOFFFlow__Group__18__Impl18133); 
+             after(grammarAccess.getONOFFFlowAccess().getRightCurlyBracketKeyword_18()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group__18__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_6__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9056:1: rule__ONOFFFlow__Group_6__0 : rule__ONOFFFlow__Group_6__0__Impl rule__ONOFFFlow__Group_6__1 ;
+    public final void rule__ONOFFFlow__Group_6__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9060:1: ( rule__ONOFFFlow__Group_6__0__Impl rule__ONOFFFlow__Group_6__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9061:2: rule__ONOFFFlow__Group_6__0__Impl rule__ONOFFFlow__Group_6__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_6__0__Impl_in_rule__ONOFFFlow__Group_6__018202);
+            rule__ONOFFFlow__Group_6__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_6__1_in_rule__ONOFFFlow__Group_6__018205);
+            rule__ONOFFFlow__Group_6__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_6__0"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_6__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9068:1: rule__ONOFFFlow__Group_6__0__Impl : ( 'alternativeNames' ) ;
+    public final void rule__ONOFFFlow__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9072:1: ( ( 'alternativeNames' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9073:1: ( 'alternativeNames' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9073:1: ( 'alternativeNames' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9074:1: 'alternativeNames'
+            {
+             before(grammarAccess.getONOFFFlowAccess().getAlternativeNamesKeyword_6_0()); 
+            match(input,67,FollowSets000.FOLLOW_67_in_rule__ONOFFFlow__Group_6__0__Impl18233); 
+             after(grammarAccess.getONOFFFlowAccess().getAlternativeNamesKeyword_6_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_6__0__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_6__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9087:1: rule__ONOFFFlow__Group_6__1 : rule__ONOFFFlow__Group_6__1__Impl rule__ONOFFFlow__Group_6__2 ;
+    public final void rule__ONOFFFlow__Group_6__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9091:1: ( rule__ONOFFFlow__Group_6__1__Impl rule__ONOFFFlow__Group_6__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9092:2: rule__ONOFFFlow__Group_6__1__Impl rule__ONOFFFlow__Group_6__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_6__1__Impl_in_rule__ONOFFFlow__Group_6__118264);
+            rule__ONOFFFlow__Group_6__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_6__2_in_rule__ONOFFFlow__Group_6__118267);
+            rule__ONOFFFlow__Group_6__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_6__1"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_6__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9099:1: rule__ONOFFFlow__Group_6__1__Impl : ( '{' ) ;
+    public final void rule__ONOFFFlow__Group_6__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9103:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9104:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9104:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9105:1: '{'
+            {
+             before(grammarAccess.getONOFFFlowAccess().getLeftCurlyBracketKeyword_6_1()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__ONOFFFlow__Group_6__1__Impl18295); 
+             after(grammarAccess.getONOFFFlowAccess().getLeftCurlyBracketKeyword_6_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_6__1__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_6__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9118:1: rule__ONOFFFlow__Group_6__2 : rule__ONOFFFlow__Group_6__2__Impl rule__ONOFFFlow__Group_6__3 ;
+    public final void rule__ONOFFFlow__Group_6__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9122:1: ( rule__ONOFFFlow__Group_6__2__Impl rule__ONOFFFlow__Group_6__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9123:2: rule__ONOFFFlow__Group_6__2__Impl rule__ONOFFFlow__Group_6__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_6__2__Impl_in_rule__ONOFFFlow__Group_6__218326);
+            rule__ONOFFFlow__Group_6__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_6__3_in_rule__ONOFFFlow__Group_6__218329);
+            rule__ONOFFFlow__Group_6__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_6__2"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_6__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9130:1: rule__ONOFFFlow__Group_6__2__Impl : ( ( rule__ONOFFFlow__AlternativeNamesAssignment_6_2 ) ) ;
+    public final void rule__ONOFFFlow__Group_6__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9134:1: ( ( ( rule__ONOFFFlow__AlternativeNamesAssignment_6_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9135:1: ( ( rule__ONOFFFlow__AlternativeNamesAssignment_6_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9135:1: ( ( rule__ONOFFFlow__AlternativeNamesAssignment_6_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9136:1: ( rule__ONOFFFlow__AlternativeNamesAssignment_6_2 )
+            {
+             before(grammarAccess.getONOFFFlowAccess().getAlternativeNamesAssignment_6_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9137:1: ( rule__ONOFFFlow__AlternativeNamesAssignment_6_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9137:2: rule__ONOFFFlow__AlternativeNamesAssignment_6_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__AlternativeNamesAssignment_6_2_in_rule__ONOFFFlow__Group_6__2__Impl18356);
+            rule__ONOFFFlow__AlternativeNamesAssignment_6_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getAlternativeNamesAssignment_6_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_6__2__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_6__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9147:1: rule__ONOFFFlow__Group_6__3 : rule__ONOFFFlow__Group_6__3__Impl rule__ONOFFFlow__Group_6__4 ;
+    public final void rule__ONOFFFlow__Group_6__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9151:1: ( rule__ONOFFFlow__Group_6__3__Impl rule__ONOFFFlow__Group_6__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9152:2: rule__ONOFFFlow__Group_6__3__Impl rule__ONOFFFlow__Group_6__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_6__3__Impl_in_rule__ONOFFFlow__Group_6__318386);
+            rule__ONOFFFlow__Group_6__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_6__4_in_rule__ONOFFFlow__Group_6__318389);
+            rule__ONOFFFlow__Group_6__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_6__3"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_6__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9159:1: rule__ONOFFFlow__Group_6__3__Impl : ( ( rule__ONOFFFlow__Group_6_3__0 )* ) ;
+    public final void rule__ONOFFFlow__Group_6__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9163:1: ( ( ( rule__ONOFFFlow__Group_6_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9164:1: ( ( rule__ONOFFFlow__Group_6_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9164:1: ( ( rule__ONOFFFlow__Group_6_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9165:1: ( rule__ONOFFFlow__Group_6_3__0 )*
+            {
+             before(grammarAccess.getONOFFFlowAccess().getGroup_6_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9166:1: ( rule__ONOFFFlow__Group_6_3__0 )*
+            loop41:
+            do {
+                int alt41=2;
+                int LA41_0 = input.LA(1);
+
+                if ( (LA41_0==31) ) {
+                    alt41=1;
+                }
+
+
+                switch (alt41) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9166:2: rule__ONOFFFlow__Group_6_3__0
+            	    {
+            	    pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_6_3__0_in_rule__ONOFFFlow__Group_6__3__Impl18416);
+            	    rule__ONOFFFlow__Group_6_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop41;
+                }
+            } while (true);
+
+             after(grammarAccess.getONOFFFlowAccess().getGroup_6_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_6__3__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_6__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9176:1: rule__ONOFFFlow__Group_6__4 : rule__ONOFFFlow__Group_6__4__Impl ;
+    public final void rule__ONOFFFlow__Group_6__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9180:1: ( rule__ONOFFFlow__Group_6__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9181:2: rule__ONOFFFlow__Group_6__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_6__4__Impl_in_rule__ONOFFFlow__Group_6__418447);
+            rule__ONOFFFlow__Group_6__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_6__4"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_6__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9187:1: rule__ONOFFFlow__Group_6__4__Impl : ( '}' ) ;
+    public final void rule__ONOFFFlow__Group_6__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9191:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9192:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9192:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9193:1: '}'
+            {
+             before(grammarAccess.getONOFFFlowAccess().getRightCurlyBracketKeyword_6_4()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__ONOFFFlow__Group_6__4__Impl18475); 
+             after(grammarAccess.getONOFFFlowAccess().getRightCurlyBracketKeyword_6_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_6__4__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_6_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9216:1: rule__ONOFFFlow__Group_6_3__0 : rule__ONOFFFlow__Group_6_3__0__Impl rule__ONOFFFlow__Group_6_3__1 ;
+    public final void rule__ONOFFFlow__Group_6_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9220:1: ( rule__ONOFFFlow__Group_6_3__0__Impl rule__ONOFFFlow__Group_6_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9221:2: rule__ONOFFFlow__Group_6_3__0__Impl rule__ONOFFFlow__Group_6_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_6_3__0__Impl_in_rule__ONOFFFlow__Group_6_3__018516);
+            rule__ONOFFFlow__Group_6_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_6_3__1_in_rule__ONOFFFlow__Group_6_3__018519);
+            rule__ONOFFFlow__Group_6_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_6_3__0"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_6_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9228:1: rule__ONOFFFlow__Group_6_3__0__Impl : ( ',' ) ;
+    public final void rule__ONOFFFlow__Group_6_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9232:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9233:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9233:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9234:1: ','
+            {
+             before(grammarAccess.getONOFFFlowAccess().getCommaKeyword_6_3_0()); 
+            match(input,31,FollowSets000.FOLLOW_31_in_rule__ONOFFFlow__Group_6_3__0__Impl18547); 
+             after(grammarAccess.getONOFFFlowAccess().getCommaKeyword_6_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_6_3__0__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_6_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9247:1: rule__ONOFFFlow__Group_6_3__1 : rule__ONOFFFlow__Group_6_3__1__Impl ;
+    public final void rule__ONOFFFlow__Group_6_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9251:1: ( rule__ONOFFFlow__Group_6_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9252:2: rule__ONOFFFlow__Group_6_3__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_6_3__1__Impl_in_rule__ONOFFFlow__Group_6_3__118578);
+            rule__ONOFFFlow__Group_6_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_6_3__1"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_6_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9258:1: rule__ONOFFFlow__Group_6_3__1__Impl : ( ( rule__ONOFFFlow__AlternativeNamesAssignment_6_3_1 ) ) ;
+    public final void rule__ONOFFFlow__Group_6_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9262:1: ( ( ( rule__ONOFFFlow__AlternativeNamesAssignment_6_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9263:1: ( ( rule__ONOFFFlow__AlternativeNamesAssignment_6_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9263:1: ( ( rule__ONOFFFlow__AlternativeNamesAssignment_6_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9264:1: ( rule__ONOFFFlow__AlternativeNamesAssignment_6_3_1 )
+            {
+             before(grammarAccess.getONOFFFlowAccess().getAlternativeNamesAssignment_6_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9265:1: ( rule__ONOFFFlow__AlternativeNamesAssignment_6_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9265:2: rule__ONOFFFlow__AlternativeNamesAssignment_6_3_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__AlternativeNamesAssignment_6_3_1_in_rule__ONOFFFlow__Group_6_3__1__Impl18605);
+            rule__ONOFFFlow__AlternativeNamesAssignment_6_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getAlternativeNamesAssignment_6_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_6_3__1__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_7__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9279:1: rule__ONOFFFlow__Group_7__0 : rule__ONOFFFlow__Group_7__0__Impl rule__ONOFFFlow__Group_7__1 ;
+    public final void rule__ONOFFFlow__Group_7__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9283:1: ( rule__ONOFFFlow__Group_7__0__Impl rule__ONOFFFlow__Group_7__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9284:2: rule__ONOFFFlow__Group_7__0__Impl rule__ONOFFFlow__Group_7__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_7__0__Impl_in_rule__ONOFFFlow__Group_7__018639);
+            rule__ONOFFFlow__Group_7__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_7__1_in_rule__ONOFFFlow__Group_7__018642);
+            rule__ONOFFFlow__Group_7__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_7__0"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_7__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9291:1: rule__ONOFFFlow__Group_7__0__Impl : ( 'destinationSoftwareComponent' ) ;
+    public final void rule__ONOFFFlow__Group_7__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9295:1: ( ( 'destinationSoftwareComponent' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9296:1: ( 'destinationSoftwareComponent' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9296:1: ( 'destinationSoftwareComponent' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9297:1: 'destinationSoftwareComponent'
+            {
+             before(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentKeyword_7_0()); 
+            match(input,77,FollowSets000.FOLLOW_77_in_rule__ONOFFFlow__Group_7__0__Impl18670); 
+             after(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentKeyword_7_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_7__0__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_7__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9310:1: rule__ONOFFFlow__Group_7__1 : rule__ONOFFFlow__Group_7__1__Impl ;
+    public final void rule__ONOFFFlow__Group_7__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9314:1: ( rule__ONOFFFlow__Group_7__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9315:2: rule__ONOFFFlow__Group_7__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_7__1__Impl_in_rule__ONOFFFlow__Group_7__118701);
+            rule__ONOFFFlow__Group_7__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_7__1"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_7__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9321:1: rule__ONOFFFlow__Group_7__1__Impl : ( ( rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_1 ) ) ;
+    public final void rule__ONOFFFlow__Group_7__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9325:1: ( ( ( rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9326:1: ( ( rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9326:1: ( ( rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9327:1: ( rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_1 )
+            {
+             before(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentAssignment_7_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9328:1: ( rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9328:2: rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_1_in_rule__ONOFFFlow__Group_7__1__Impl18728);
+            rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentAssignment_7_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_7__1__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_8__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9342:1: rule__ONOFFFlow__Group_8__0 : rule__ONOFFFlow__Group_8__0__Impl rule__ONOFFFlow__Group_8__1 ;
+    public final void rule__ONOFFFlow__Group_8__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9346:1: ( rule__ONOFFFlow__Group_8__0__Impl rule__ONOFFFlow__Group_8__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9347:2: rule__ONOFFFlow__Group_8__0__Impl rule__ONOFFFlow__Group_8__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_8__0__Impl_in_rule__ONOFFFlow__Group_8__018762);
+            rule__ONOFFFlow__Group_8__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_8__1_in_rule__ONOFFFlow__Group_8__018765);
+            rule__ONOFFFlow__Group_8__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_8__0"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_8__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9354:1: rule__ONOFFFlow__Group_8__0__Impl : ( 'sourceSoftwareComponent' ) ;
+    public final void rule__ONOFFFlow__Group_8__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9358:1: ( ( 'sourceSoftwareComponent' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9359:1: ( 'sourceSoftwareComponent' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9359:1: ( 'sourceSoftwareComponent' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9360:1: 'sourceSoftwareComponent'
+            {
+             before(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentKeyword_8_0()); 
+            match(input,78,FollowSets000.FOLLOW_78_in_rule__ONOFFFlow__Group_8__0__Impl18793); 
+             after(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentKeyword_8_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_8__0__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_8__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9373:1: rule__ONOFFFlow__Group_8__1 : rule__ONOFFFlow__Group_8__1__Impl ;
+    public final void rule__ONOFFFlow__Group_8__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9377:1: ( rule__ONOFFFlow__Group_8__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9378:2: rule__ONOFFFlow__Group_8__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_8__1__Impl_in_rule__ONOFFFlow__Group_8__118824);
+            rule__ONOFFFlow__Group_8__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_8__1"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_8__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9384:1: rule__ONOFFFlow__Group_8__1__Impl : ( ( rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_1 ) ) ;
+    public final void rule__ONOFFFlow__Group_8__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9388:1: ( ( ( rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9389:1: ( ( rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9389:1: ( ( rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9390:1: ( rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_1 )
+            {
+             before(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentAssignment_8_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9391:1: ( rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9391:2: rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_1_in_rule__ONOFFFlow__Group_8__1__Impl18851);
+            rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentAssignment_8_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_8__1__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_9__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9405:1: rule__ONOFFFlow__Group_9__0 : rule__ONOFFFlow__Group_9__0__Impl rule__ONOFFFlow__Group_9__1 ;
+    public final void rule__ONOFFFlow__Group_9__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9409:1: ( rule__ONOFFFlow__Group_9__0__Impl rule__ONOFFFlow__Group_9__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9410:2: rule__ONOFFFlow__Group_9__0__Impl rule__ONOFFFlow__Group_9__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_9__0__Impl_in_rule__ONOFFFlow__Group_9__018885);
+            rule__ONOFFFlow__Group_9__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_9__1_in_rule__ONOFFFlow__Group_9__018888);
+            rule__ONOFFFlow__Group_9__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_9__0"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_9__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9417:1: rule__ONOFFFlow__Group_9__0__Impl : ( 'destinationAddresses' ) ;
+    public final void rule__ONOFFFlow__Group_9__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9421:1: ( ( 'destinationAddresses' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9422:1: ( 'destinationAddresses' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9422:1: ( 'destinationAddresses' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9423:1: 'destinationAddresses'
+            {
+             before(grammarAccess.getONOFFFlowAccess().getDestinationAddressesKeyword_9_0()); 
+            match(input,79,FollowSets000.FOLLOW_79_in_rule__ONOFFFlow__Group_9__0__Impl18916); 
+             after(grammarAccess.getONOFFFlowAccess().getDestinationAddressesKeyword_9_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_9__0__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_9__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9436:1: rule__ONOFFFlow__Group_9__1 : rule__ONOFFFlow__Group_9__1__Impl rule__ONOFFFlow__Group_9__2 ;
+    public final void rule__ONOFFFlow__Group_9__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9440:1: ( rule__ONOFFFlow__Group_9__1__Impl rule__ONOFFFlow__Group_9__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9441:2: rule__ONOFFFlow__Group_9__1__Impl rule__ONOFFFlow__Group_9__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_9__1__Impl_in_rule__ONOFFFlow__Group_9__118947);
+            rule__ONOFFFlow__Group_9__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_9__2_in_rule__ONOFFFlow__Group_9__118950);
+            rule__ONOFFFlow__Group_9__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_9__1"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_9__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9448:1: rule__ONOFFFlow__Group_9__1__Impl : ( '{' ) ;
+    public final void rule__ONOFFFlow__Group_9__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9452:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9453:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9453:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9454:1: '{'
+            {
+             before(grammarAccess.getONOFFFlowAccess().getLeftCurlyBracketKeyword_9_1()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__ONOFFFlow__Group_9__1__Impl18978); 
+             after(grammarAccess.getONOFFFlowAccess().getLeftCurlyBracketKeyword_9_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_9__1__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_9__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9467:1: rule__ONOFFFlow__Group_9__2 : rule__ONOFFFlow__Group_9__2__Impl rule__ONOFFFlow__Group_9__3 ;
+    public final void rule__ONOFFFlow__Group_9__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9471:1: ( rule__ONOFFFlow__Group_9__2__Impl rule__ONOFFFlow__Group_9__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9472:2: rule__ONOFFFlow__Group_9__2__Impl rule__ONOFFFlow__Group_9__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_9__2__Impl_in_rule__ONOFFFlow__Group_9__219009);
+            rule__ONOFFFlow__Group_9__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_9__3_in_rule__ONOFFFlow__Group_9__219012);
+            rule__ONOFFFlow__Group_9__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_9__2"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_9__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9479:1: rule__ONOFFFlow__Group_9__2__Impl : ( ( rule__ONOFFFlow__DestinationAddressesAssignment_9_2 ) ) ;
+    public final void rule__ONOFFFlow__Group_9__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9483:1: ( ( ( rule__ONOFFFlow__DestinationAddressesAssignment_9_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9484:1: ( ( rule__ONOFFFlow__DestinationAddressesAssignment_9_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9484:1: ( ( rule__ONOFFFlow__DestinationAddressesAssignment_9_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9485:1: ( rule__ONOFFFlow__DestinationAddressesAssignment_9_2 )
+            {
+             before(grammarAccess.getONOFFFlowAccess().getDestinationAddressesAssignment_9_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9486:1: ( rule__ONOFFFlow__DestinationAddressesAssignment_9_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9486:2: rule__ONOFFFlow__DestinationAddressesAssignment_9_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__DestinationAddressesAssignment_9_2_in_rule__ONOFFFlow__Group_9__2__Impl19039);
+            rule__ONOFFFlow__DestinationAddressesAssignment_9_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getDestinationAddressesAssignment_9_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_9__2__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_9__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9496:1: rule__ONOFFFlow__Group_9__3 : rule__ONOFFFlow__Group_9__3__Impl rule__ONOFFFlow__Group_9__4 ;
+    public final void rule__ONOFFFlow__Group_9__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9500:1: ( rule__ONOFFFlow__Group_9__3__Impl rule__ONOFFFlow__Group_9__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9501:2: rule__ONOFFFlow__Group_9__3__Impl rule__ONOFFFlow__Group_9__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_9__3__Impl_in_rule__ONOFFFlow__Group_9__319069);
+            rule__ONOFFFlow__Group_9__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_9__4_in_rule__ONOFFFlow__Group_9__319072);
+            rule__ONOFFFlow__Group_9__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_9__3"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_9__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9508:1: rule__ONOFFFlow__Group_9__3__Impl : ( ( rule__ONOFFFlow__Group_9_3__0 )* ) ;
+    public final void rule__ONOFFFlow__Group_9__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9512:1: ( ( ( rule__ONOFFFlow__Group_9_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9513:1: ( ( rule__ONOFFFlow__Group_9_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9513:1: ( ( rule__ONOFFFlow__Group_9_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9514:1: ( rule__ONOFFFlow__Group_9_3__0 )*
+            {
+             before(grammarAccess.getONOFFFlowAccess().getGroup_9_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9515:1: ( rule__ONOFFFlow__Group_9_3__0 )*
+            loop42:
+            do {
+                int alt42=2;
+                int LA42_0 = input.LA(1);
+
+                if ( (LA42_0==31) ) {
+                    alt42=1;
+                }
+
+
+                switch (alt42) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9515:2: rule__ONOFFFlow__Group_9_3__0
+            	    {
+            	    pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_9_3__0_in_rule__ONOFFFlow__Group_9__3__Impl19099);
+            	    rule__ONOFFFlow__Group_9_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop42;
+                }
+            } while (true);
+
+             after(grammarAccess.getONOFFFlowAccess().getGroup_9_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_9__3__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_9__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9525:1: rule__ONOFFFlow__Group_9__4 : rule__ONOFFFlow__Group_9__4__Impl ;
+    public final void rule__ONOFFFlow__Group_9__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9529:1: ( rule__ONOFFFlow__Group_9__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9530:2: rule__ONOFFFlow__Group_9__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_9__4__Impl_in_rule__ONOFFFlow__Group_9__419130);
+            rule__ONOFFFlow__Group_9__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_9__4"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_9__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9536:1: rule__ONOFFFlow__Group_9__4__Impl : ( '}' ) ;
+    public final void rule__ONOFFFlow__Group_9__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9540:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9541:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9541:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9542:1: '}'
+            {
+             before(grammarAccess.getONOFFFlowAccess().getRightCurlyBracketKeyword_9_4()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__ONOFFFlow__Group_9__4__Impl19158); 
+             after(grammarAccess.getONOFFFlowAccess().getRightCurlyBracketKeyword_9_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_9__4__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_9_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9565:1: rule__ONOFFFlow__Group_9_3__0 : rule__ONOFFFlow__Group_9_3__0__Impl rule__ONOFFFlow__Group_9_3__1 ;
+    public final void rule__ONOFFFlow__Group_9_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9569:1: ( rule__ONOFFFlow__Group_9_3__0__Impl rule__ONOFFFlow__Group_9_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9570:2: rule__ONOFFFlow__Group_9_3__0__Impl rule__ONOFFFlow__Group_9_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_9_3__0__Impl_in_rule__ONOFFFlow__Group_9_3__019199);
+            rule__ONOFFFlow__Group_9_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_9_3__1_in_rule__ONOFFFlow__Group_9_3__019202);
+            rule__ONOFFFlow__Group_9_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_9_3__0"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_9_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9577:1: rule__ONOFFFlow__Group_9_3__0__Impl : ( ',' ) ;
+    public final void rule__ONOFFFlow__Group_9_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9581:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9582:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9582:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9583:1: ','
+            {
+             before(grammarAccess.getONOFFFlowAccess().getCommaKeyword_9_3_0()); 
+            match(input,31,FollowSets000.FOLLOW_31_in_rule__ONOFFFlow__Group_9_3__0__Impl19230); 
+             after(grammarAccess.getONOFFFlowAccess().getCommaKeyword_9_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_9_3__0__Impl"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_9_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9596:1: rule__ONOFFFlow__Group_9_3__1 : rule__ONOFFFlow__Group_9_3__1__Impl ;
+    public final void rule__ONOFFFlow__Group_9_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9600:1: ( rule__ONOFFFlow__Group_9_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9601:2: rule__ONOFFFlow__Group_9_3__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__Group_9_3__1__Impl_in_rule__ONOFFFlow__Group_9_3__119261);
+            rule__ONOFFFlow__Group_9_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_9_3__1"
+
+
+    // $ANTLR start "rule__ONOFFFlow__Group_9_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9607:1: rule__ONOFFFlow__Group_9_3__1__Impl : ( ( rule__ONOFFFlow__DestinationAddressesAssignment_9_3_1 ) ) ;
+    public final void rule__ONOFFFlow__Group_9_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9611:1: ( ( ( rule__ONOFFFlow__DestinationAddressesAssignment_9_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9612:1: ( ( rule__ONOFFFlow__DestinationAddressesAssignment_9_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9612:1: ( ( rule__ONOFFFlow__DestinationAddressesAssignment_9_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9613:1: ( rule__ONOFFFlow__DestinationAddressesAssignment_9_3_1 )
+            {
+             before(grammarAccess.getONOFFFlowAccess().getDestinationAddressesAssignment_9_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9614:1: ( rule__ONOFFFlow__DestinationAddressesAssignment_9_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9614:2: rule__ONOFFFlow__DestinationAddressesAssignment_9_3_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__ONOFFFlow__DestinationAddressesAssignment_9_3_1_in_rule__ONOFFFlow__Group_9_3__1__Impl19288);
+            rule__ONOFFFlow__DestinationAddressesAssignment_9_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getDestinationAddressesAssignment_9_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__Group_9_3__1__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9628:1: rule__GenericFlow__Group__0 : rule__GenericFlow__Group__0__Impl rule__GenericFlow__Group__1 ;
+    public final void rule__GenericFlow__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9632:1: ( rule__GenericFlow__Group__0__Impl rule__GenericFlow__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9633:2: rule__GenericFlow__Group__0__Impl rule__GenericFlow__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__0__Impl_in_rule__GenericFlow__Group__019322);
+            rule__GenericFlow__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__1_in_rule__GenericFlow__Group__019325);
+            rule__GenericFlow__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__0"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9640:1: rule__GenericFlow__Group__0__Impl : ( 'GenericFlow' ) ;
+    public final void rule__GenericFlow__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9644:1: ( ( 'GenericFlow' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9645:1: ( 'GenericFlow' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9645:1: ( 'GenericFlow' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9646:1: 'GenericFlow'
+            {
+             before(grammarAccess.getGenericFlowAccess().getGenericFlowKeyword_0()); 
+            match(input,80,FollowSets000.FOLLOW_80_in_rule__GenericFlow__Group__0__Impl19353); 
+             after(grammarAccess.getGenericFlowAccess().getGenericFlowKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__0__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9659:1: rule__GenericFlow__Group__1 : rule__GenericFlow__Group__1__Impl rule__GenericFlow__Group__2 ;
+    public final void rule__GenericFlow__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9663:1: ( rule__GenericFlow__Group__1__Impl rule__GenericFlow__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9664:2: rule__GenericFlow__Group__1__Impl rule__GenericFlow__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__1__Impl_in_rule__GenericFlow__Group__119384);
+            rule__GenericFlow__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__2_in_rule__GenericFlow__Group__119387);
+            rule__GenericFlow__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__1"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9671:1: rule__GenericFlow__Group__1__Impl : ( ( rule__GenericFlow__IdAssignment_1 ) ) ;
+    public final void rule__GenericFlow__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9675:1: ( ( ( rule__GenericFlow__IdAssignment_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9676:1: ( ( rule__GenericFlow__IdAssignment_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9676:1: ( ( rule__GenericFlow__IdAssignment_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9677:1: ( rule__GenericFlow__IdAssignment_1 )
+            {
+             before(grammarAccess.getGenericFlowAccess().getIdAssignment_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9678:1: ( rule__GenericFlow__IdAssignment_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9678:2: rule__GenericFlow__IdAssignment_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__IdAssignment_1_in_rule__GenericFlow__Group__1__Impl19414);
+            rule__GenericFlow__IdAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGenericFlowAccess().getIdAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__1__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9688:1: rule__GenericFlow__Group__2 : rule__GenericFlow__Group__2__Impl rule__GenericFlow__Group__3 ;
+    public final void rule__GenericFlow__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9692:1: ( rule__GenericFlow__Group__2__Impl rule__GenericFlow__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9693:2: rule__GenericFlow__Group__2__Impl rule__GenericFlow__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__2__Impl_in_rule__GenericFlow__Group__219444);
+            rule__GenericFlow__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__3_in_rule__GenericFlow__Group__219447);
+            rule__GenericFlow__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__2"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9700:1: rule__GenericFlow__Group__2__Impl : ( '{' ) ;
+    public final void rule__GenericFlow__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9704:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9705:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9705:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9706:1: '{'
+            {
+             before(grammarAccess.getGenericFlowAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__GenericFlow__Group__2__Impl19475); 
+             after(grammarAccess.getGenericFlowAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__2__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9719:1: rule__GenericFlow__Group__3 : rule__GenericFlow__Group__3__Impl rule__GenericFlow__Group__4 ;
+    public final void rule__GenericFlow__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9723:1: ( rule__GenericFlow__Group__3__Impl rule__GenericFlow__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9724:2: rule__GenericFlow__Group__3__Impl rule__GenericFlow__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__3__Impl_in_rule__GenericFlow__Group__319506);
+            rule__GenericFlow__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__4_in_rule__GenericFlow__Group__319509);
+            rule__GenericFlow__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__3"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9731:1: rule__GenericFlow__Group__3__Impl : ( 'name' ) ;
+    public final void rule__GenericFlow__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9735:1: ( ( 'name' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9736:1: ( 'name' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9736:1: ( 'name' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9737:1: 'name'
+            {
+             before(grammarAccess.getGenericFlowAccess().getNameKeyword_3()); 
+            match(input,65,FollowSets000.FOLLOW_65_in_rule__GenericFlow__Group__3__Impl19537); 
+             after(grammarAccess.getGenericFlowAccess().getNameKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__3__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9750:1: rule__GenericFlow__Group__4 : rule__GenericFlow__Group__4__Impl rule__GenericFlow__Group__5 ;
+    public final void rule__GenericFlow__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9754:1: ( rule__GenericFlow__Group__4__Impl rule__GenericFlow__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9755:2: rule__GenericFlow__Group__4__Impl rule__GenericFlow__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__4__Impl_in_rule__GenericFlow__Group__419568);
+            rule__GenericFlow__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__5_in_rule__GenericFlow__Group__419571);
+            rule__GenericFlow__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__4"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9762:1: rule__GenericFlow__Group__4__Impl : ( ( rule__GenericFlow__NameAssignment_4 ) ) ;
+    public final void rule__GenericFlow__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9766:1: ( ( ( rule__GenericFlow__NameAssignment_4 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9767:1: ( ( rule__GenericFlow__NameAssignment_4 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9767:1: ( ( rule__GenericFlow__NameAssignment_4 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9768:1: ( rule__GenericFlow__NameAssignment_4 )
+            {
+             before(grammarAccess.getGenericFlowAccess().getNameAssignment_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9769:1: ( rule__GenericFlow__NameAssignment_4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9769:2: rule__GenericFlow__NameAssignment_4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__NameAssignment_4_in_rule__GenericFlow__Group__4__Impl19598);
+            rule__GenericFlow__NameAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGenericFlowAccess().getNameAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__4__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9779:1: rule__GenericFlow__Group__5 : rule__GenericFlow__Group__5__Impl rule__GenericFlow__Group__6 ;
+    public final void rule__GenericFlow__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9783:1: ( rule__GenericFlow__Group__5__Impl rule__GenericFlow__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9784:2: rule__GenericFlow__Group__5__Impl rule__GenericFlow__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__5__Impl_in_rule__GenericFlow__Group__519628);
+            rule__GenericFlow__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__6_in_rule__GenericFlow__Group__519631);
+            rule__GenericFlow__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__5"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9791:1: rule__GenericFlow__Group__5__Impl : ( ( rule__GenericFlow__Group_5__0 )? ) ;
+    public final void rule__GenericFlow__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9795:1: ( ( ( rule__GenericFlow__Group_5__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9796:1: ( ( rule__GenericFlow__Group_5__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9796:1: ( ( rule__GenericFlow__Group_5__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9797:1: ( rule__GenericFlow__Group_5__0 )?
+            {
+             before(grammarAccess.getGenericFlowAccess().getGroup_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9798:1: ( rule__GenericFlow__Group_5__0 )?
+            int alt43=2;
+            int LA43_0 = input.LA(1);
+
+            if ( (LA43_0==67) ) {
+                alt43=1;
+            }
+            switch (alt43) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9798:2: rule__GenericFlow__Group_5__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_5__0_in_rule__GenericFlow__Group__5__Impl19658);
+                    rule__GenericFlow__Group_5__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getGenericFlowAccess().getGroup_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__5__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9808:1: rule__GenericFlow__Group__6 : rule__GenericFlow__Group__6__Impl rule__GenericFlow__Group__7 ;
+    public final void rule__GenericFlow__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9812:1: ( rule__GenericFlow__Group__6__Impl rule__GenericFlow__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9813:2: rule__GenericFlow__Group__6__Impl rule__GenericFlow__Group__7
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__6__Impl_in_rule__GenericFlow__Group__619689);
+            rule__GenericFlow__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__7_in_rule__GenericFlow__Group__619692);
+            rule__GenericFlow__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__6"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9820:1: rule__GenericFlow__Group__6__Impl : ( ( rule__GenericFlow__Group_6__0 )? ) ;
+    public final void rule__GenericFlow__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9824:1: ( ( ( rule__GenericFlow__Group_6__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9825:1: ( ( rule__GenericFlow__Group_6__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9825:1: ( ( rule__GenericFlow__Group_6__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9826:1: ( rule__GenericFlow__Group_6__0 )?
+            {
+             before(grammarAccess.getGenericFlowAccess().getGroup_6()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9827:1: ( rule__GenericFlow__Group_6__0 )?
+            int alt44=2;
+            int LA44_0 = input.LA(1);
+
+            if ( (LA44_0==77) ) {
+                alt44=1;
+            }
+            switch (alt44) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9827:2: rule__GenericFlow__Group_6__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_6__0_in_rule__GenericFlow__Group__6__Impl19719);
+                    rule__GenericFlow__Group_6__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getGenericFlowAccess().getGroup_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__6__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9837:1: rule__GenericFlow__Group__7 : rule__GenericFlow__Group__7__Impl rule__GenericFlow__Group__8 ;
+    public final void rule__GenericFlow__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9841:1: ( rule__GenericFlow__Group__7__Impl rule__GenericFlow__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9842:2: rule__GenericFlow__Group__7__Impl rule__GenericFlow__Group__8
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__7__Impl_in_rule__GenericFlow__Group__719750);
+            rule__GenericFlow__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__8_in_rule__GenericFlow__Group__719753);
+            rule__GenericFlow__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__7"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9849:1: rule__GenericFlow__Group__7__Impl : ( ( rule__GenericFlow__Group_7__0 )? ) ;
+    public final void rule__GenericFlow__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9853:1: ( ( ( rule__GenericFlow__Group_7__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9854:1: ( ( rule__GenericFlow__Group_7__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9854:1: ( ( rule__GenericFlow__Group_7__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9855:1: ( rule__GenericFlow__Group_7__0 )?
+            {
+             before(grammarAccess.getGenericFlowAccess().getGroup_7()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9856:1: ( rule__GenericFlow__Group_7__0 )?
+            int alt45=2;
+            int LA45_0 = input.LA(1);
+
+            if ( (LA45_0==78) ) {
+                alt45=1;
+            }
+            switch (alt45) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9856:2: rule__GenericFlow__Group_7__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_7__0_in_rule__GenericFlow__Group__7__Impl19780);
+                    rule__GenericFlow__Group_7__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getGenericFlowAccess().getGroup_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__7__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9866:1: rule__GenericFlow__Group__8 : rule__GenericFlow__Group__8__Impl rule__GenericFlow__Group__9 ;
+    public final void rule__GenericFlow__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9870:1: ( rule__GenericFlow__Group__8__Impl rule__GenericFlow__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9871:2: rule__GenericFlow__Group__8__Impl rule__GenericFlow__Group__9
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__8__Impl_in_rule__GenericFlow__Group__819811);
+            rule__GenericFlow__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__9_in_rule__GenericFlow__Group__819814);
+            rule__GenericFlow__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__8"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9878:1: rule__GenericFlow__Group__8__Impl : ( ( rule__GenericFlow__Group_8__0 )? ) ;
+    public final void rule__GenericFlow__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9882:1: ( ( ( rule__GenericFlow__Group_8__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9883:1: ( ( rule__GenericFlow__Group_8__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9883:1: ( ( rule__GenericFlow__Group_8__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9884:1: ( rule__GenericFlow__Group_8__0 )?
+            {
+             before(grammarAccess.getGenericFlowAccess().getGroup_8()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9885:1: ( rule__GenericFlow__Group_8__0 )?
+            int alt46=2;
+            int LA46_0 = input.LA(1);
+
+            if ( (LA46_0==79) ) {
+                alt46=1;
+            }
+            switch (alt46) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9885:2: rule__GenericFlow__Group_8__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_8__0_in_rule__GenericFlow__Group__8__Impl19841);
+                    rule__GenericFlow__Group_8__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getGenericFlowAccess().getGroup_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__8__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9895:1: rule__GenericFlow__Group__9 : rule__GenericFlow__Group__9__Impl rule__GenericFlow__Group__10 ;
+    public final void rule__GenericFlow__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9899:1: ( rule__GenericFlow__Group__9__Impl rule__GenericFlow__Group__10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9900:2: rule__GenericFlow__Group__9__Impl rule__GenericFlow__Group__10
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__9__Impl_in_rule__GenericFlow__Group__919872);
+            rule__GenericFlow__Group__9__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__10_in_rule__GenericFlow__Group__919875);
+            rule__GenericFlow__Group__10();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__9"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9907:1: rule__GenericFlow__Group__9__Impl : ( 'dataSize' ) ;
+    public final void rule__GenericFlow__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9911:1: ( ( 'dataSize' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9912:1: ( 'dataSize' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9912:1: ( 'dataSize' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9913:1: 'dataSize'
+            {
+             before(grammarAccess.getGenericFlowAccess().getDataSizeKeyword_9()); 
+            match(input,81,FollowSets000.FOLLOW_81_in_rule__GenericFlow__Group__9__Impl19903); 
+             after(grammarAccess.getGenericFlowAccess().getDataSizeKeyword_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__9__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9926:1: rule__GenericFlow__Group__10 : rule__GenericFlow__Group__10__Impl rule__GenericFlow__Group__11 ;
+    public final void rule__GenericFlow__Group__10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9930:1: ( rule__GenericFlow__Group__10__Impl rule__GenericFlow__Group__11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9931:2: rule__GenericFlow__Group__10__Impl rule__GenericFlow__Group__11
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__10__Impl_in_rule__GenericFlow__Group__1019934);
+            rule__GenericFlow__Group__10__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__11_in_rule__GenericFlow__Group__1019937);
+            rule__GenericFlow__Group__11();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__10"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__10__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9938:1: rule__GenericFlow__Group__10__Impl : ( ( rule__GenericFlow__DataSizeAssignment_10 ) ) ;
+    public final void rule__GenericFlow__Group__10__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9942:1: ( ( ( rule__GenericFlow__DataSizeAssignment_10 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9943:1: ( ( rule__GenericFlow__DataSizeAssignment_10 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9943:1: ( ( rule__GenericFlow__DataSizeAssignment_10 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9944:1: ( rule__GenericFlow__DataSizeAssignment_10 )
+            {
+             before(grammarAccess.getGenericFlowAccess().getDataSizeAssignment_10()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9945:1: ( rule__GenericFlow__DataSizeAssignment_10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9945:2: rule__GenericFlow__DataSizeAssignment_10
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__DataSizeAssignment_10_in_rule__GenericFlow__Group__10__Impl19964);
+            rule__GenericFlow__DataSizeAssignment_10();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGenericFlowAccess().getDataSizeAssignment_10()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__10__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9955:1: rule__GenericFlow__Group__11 : rule__GenericFlow__Group__11__Impl ;
+    public final void rule__GenericFlow__Group__11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9959:1: ( rule__GenericFlow__Group__11__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9960:2: rule__GenericFlow__Group__11__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group__11__Impl_in_rule__GenericFlow__Group__1119994);
+            rule__GenericFlow__Group__11__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__11"
+
+
+    // $ANTLR start "rule__GenericFlow__Group__11__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9966:1: rule__GenericFlow__Group__11__Impl : ( '}' ) ;
+    public final void rule__GenericFlow__Group__11__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9970:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9971:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9971:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:9972:1: '}'
+            {
+             before(grammarAccess.getGenericFlowAccess().getRightCurlyBracketKeyword_11()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__GenericFlow__Group__11__Impl20022); 
+             after(grammarAccess.getGenericFlowAccess().getRightCurlyBracketKeyword_11()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group__11__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_5__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10009:1: rule__GenericFlow__Group_5__0 : rule__GenericFlow__Group_5__0__Impl rule__GenericFlow__Group_5__1 ;
+    public final void rule__GenericFlow__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10013:1: ( rule__GenericFlow__Group_5__0__Impl rule__GenericFlow__Group_5__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10014:2: rule__GenericFlow__Group_5__0__Impl rule__GenericFlow__Group_5__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_5__0__Impl_in_rule__GenericFlow__Group_5__020077);
+            rule__GenericFlow__Group_5__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_5__1_in_rule__GenericFlow__Group_5__020080);
+            rule__GenericFlow__Group_5__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_5__0"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_5__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10021:1: rule__GenericFlow__Group_5__0__Impl : ( 'alternativeNames' ) ;
+    public final void rule__GenericFlow__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10025:1: ( ( 'alternativeNames' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10026:1: ( 'alternativeNames' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10026:1: ( 'alternativeNames' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10027:1: 'alternativeNames'
+            {
+             before(grammarAccess.getGenericFlowAccess().getAlternativeNamesKeyword_5_0()); 
+            match(input,67,FollowSets000.FOLLOW_67_in_rule__GenericFlow__Group_5__0__Impl20108); 
+             after(grammarAccess.getGenericFlowAccess().getAlternativeNamesKeyword_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_5__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10040:1: rule__GenericFlow__Group_5__1 : rule__GenericFlow__Group_5__1__Impl rule__GenericFlow__Group_5__2 ;
+    public final void rule__GenericFlow__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10044:1: ( rule__GenericFlow__Group_5__1__Impl rule__GenericFlow__Group_5__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10045:2: rule__GenericFlow__Group_5__1__Impl rule__GenericFlow__Group_5__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_5__1__Impl_in_rule__GenericFlow__Group_5__120139);
+            rule__GenericFlow__Group_5__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_5__2_in_rule__GenericFlow__Group_5__120142);
+            rule__GenericFlow__Group_5__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_5__1"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_5__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10052:1: rule__GenericFlow__Group_5__1__Impl : ( '{' ) ;
+    public final void rule__GenericFlow__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10056:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10057:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10057:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10058:1: '{'
+            {
+             before(grammarAccess.getGenericFlowAccess().getLeftCurlyBracketKeyword_5_1()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__GenericFlow__Group_5__1__Impl20170); 
+             after(grammarAccess.getGenericFlowAccess().getLeftCurlyBracketKeyword_5_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_5__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10071:1: rule__GenericFlow__Group_5__2 : rule__GenericFlow__Group_5__2__Impl rule__GenericFlow__Group_5__3 ;
+    public final void rule__GenericFlow__Group_5__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10075:1: ( rule__GenericFlow__Group_5__2__Impl rule__GenericFlow__Group_5__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10076:2: rule__GenericFlow__Group_5__2__Impl rule__GenericFlow__Group_5__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_5__2__Impl_in_rule__GenericFlow__Group_5__220201);
+            rule__GenericFlow__Group_5__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_5__3_in_rule__GenericFlow__Group_5__220204);
+            rule__GenericFlow__Group_5__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_5__2"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_5__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10083:1: rule__GenericFlow__Group_5__2__Impl : ( ( rule__GenericFlow__AlternativeNamesAssignment_5_2 ) ) ;
+    public final void rule__GenericFlow__Group_5__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10087:1: ( ( ( rule__GenericFlow__AlternativeNamesAssignment_5_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10088:1: ( ( rule__GenericFlow__AlternativeNamesAssignment_5_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10088:1: ( ( rule__GenericFlow__AlternativeNamesAssignment_5_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10089:1: ( rule__GenericFlow__AlternativeNamesAssignment_5_2 )
+            {
+             before(grammarAccess.getGenericFlowAccess().getAlternativeNamesAssignment_5_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10090:1: ( rule__GenericFlow__AlternativeNamesAssignment_5_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10090:2: rule__GenericFlow__AlternativeNamesAssignment_5_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__AlternativeNamesAssignment_5_2_in_rule__GenericFlow__Group_5__2__Impl20231);
+            rule__GenericFlow__AlternativeNamesAssignment_5_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGenericFlowAccess().getAlternativeNamesAssignment_5_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_5__2__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_5__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10100:1: rule__GenericFlow__Group_5__3 : rule__GenericFlow__Group_5__3__Impl rule__GenericFlow__Group_5__4 ;
+    public final void rule__GenericFlow__Group_5__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10104:1: ( rule__GenericFlow__Group_5__3__Impl rule__GenericFlow__Group_5__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10105:2: rule__GenericFlow__Group_5__3__Impl rule__GenericFlow__Group_5__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_5__3__Impl_in_rule__GenericFlow__Group_5__320261);
+            rule__GenericFlow__Group_5__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_5__4_in_rule__GenericFlow__Group_5__320264);
+            rule__GenericFlow__Group_5__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_5__3"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_5__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10112:1: rule__GenericFlow__Group_5__3__Impl : ( ( rule__GenericFlow__Group_5_3__0 )* ) ;
+    public final void rule__GenericFlow__Group_5__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10116:1: ( ( ( rule__GenericFlow__Group_5_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10117:1: ( ( rule__GenericFlow__Group_5_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10117:1: ( ( rule__GenericFlow__Group_5_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10118:1: ( rule__GenericFlow__Group_5_3__0 )*
+            {
+             before(grammarAccess.getGenericFlowAccess().getGroup_5_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10119:1: ( rule__GenericFlow__Group_5_3__0 )*
+            loop47:
+            do {
+                int alt47=2;
+                int LA47_0 = input.LA(1);
+
+                if ( (LA47_0==31) ) {
+                    alt47=1;
+                }
+
+
+                switch (alt47) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10119:2: rule__GenericFlow__Group_5_3__0
+            	    {
+            	    pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_5_3__0_in_rule__GenericFlow__Group_5__3__Impl20291);
+            	    rule__GenericFlow__Group_5_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop47;
+                }
+            } while (true);
+
+             after(grammarAccess.getGenericFlowAccess().getGroup_5_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_5__3__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_5__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10129:1: rule__GenericFlow__Group_5__4 : rule__GenericFlow__Group_5__4__Impl ;
+    public final void rule__GenericFlow__Group_5__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10133:1: ( rule__GenericFlow__Group_5__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10134:2: rule__GenericFlow__Group_5__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_5__4__Impl_in_rule__GenericFlow__Group_5__420322);
+            rule__GenericFlow__Group_5__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_5__4"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_5__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10140:1: rule__GenericFlow__Group_5__4__Impl : ( '}' ) ;
+    public final void rule__GenericFlow__Group_5__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10144:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10145:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10145:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10146:1: '}'
+            {
+             before(grammarAccess.getGenericFlowAccess().getRightCurlyBracketKeyword_5_4()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__GenericFlow__Group_5__4__Impl20350); 
+             after(grammarAccess.getGenericFlowAccess().getRightCurlyBracketKeyword_5_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_5__4__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_5_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10169:1: rule__GenericFlow__Group_5_3__0 : rule__GenericFlow__Group_5_3__0__Impl rule__GenericFlow__Group_5_3__1 ;
+    public final void rule__GenericFlow__Group_5_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10173:1: ( rule__GenericFlow__Group_5_3__0__Impl rule__GenericFlow__Group_5_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10174:2: rule__GenericFlow__Group_5_3__0__Impl rule__GenericFlow__Group_5_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_5_3__0__Impl_in_rule__GenericFlow__Group_5_3__020391);
+            rule__GenericFlow__Group_5_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_5_3__1_in_rule__GenericFlow__Group_5_3__020394);
+            rule__GenericFlow__Group_5_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_5_3__0"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_5_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10181:1: rule__GenericFlow__Group_5_3__0__Impl : ( ',' ) ;
+    public final void rule__GenericFlow__Group_5_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10185:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10186:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10186:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10187:1: ','
+            {
+             before(grammarAccess.getGenericFlowAccess().getCommaKeyword_5_3_0()); 
+            match(input,31,FollowSets000.FOLLOW_31_in_rule__GenericFlow__Group_5_3__0__Impl20422); 
+             after(grammarAccess.getGenericFlowAccess().getCommaKeyword_5_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_5_3__0__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_5_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10200:1: rule__GenericFlow__Group_5_3__1 : rule__GenericFlow__Group_5_3__1__Impl ;
+    public final void rule__GenericFlow__Group_5_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10204:1: ( rule__GenericFlow__Group_5_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10205:2: rule__GenericFlow__Group_5_3__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_5_3__1__Impl_in_rule__GenericFlow__Group_5_3__120453);
+            rule__GenericFlow__Group_5_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_5_3__1"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_5_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10211:1: rule__GenericFlow__Group_5_3__1__Impl : ( ( rule__GenericFlow__AlternativeNamesAssignment_5_3_1 ) ) ;
+    public final void rule__GenericFlow__Group_5_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10215:1: ( ( ( rule__GenericFlow__AlternativeNamesAssignment_5_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10216:1: ( ( rule__GenericFlow__AlternativeNamesAssignment_5_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10216:1: ( ( rule__GenericFlow__AlternativeNamesAssignment_5_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10217:1: ( rule__GenericFlow__AlternativeNamesAssignment_5_3_1 )
+            {
+             before(grammarAccess.getGenericFlowAccess().getAlternativeNamesAssignment_5_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10218:1: ( rule__GenericFlow__AlternativeNamesAssignment_5_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10218:2: rule__GenericFlow__AlternativeNamesAssignment_5_3_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__AlternativeNamesAssignment_5_3_1_in_rule__GenericFlow__Group_5_3__1__Impl20480);
+            rule__GenericFlow__AlternativeNamesAssignment_5_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGenericFlowAccess().getAlternativeNamesAssignment_5_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_5_3__1__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_6__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10232:1: rule__GenericFlow__Group_6__0 : rule__GenericFlow__Group_6__0__Impl rule__GenericFlow__Group_6__1 ;
+    public final void rule__GenericFlow__Group_6__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10236:1: ( rule__GenericFlow__Group_6__0__Impl rule__GenericFlow__Group_6__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10237:2: rule__GenericFlow__Group_6__0__Impl rule__GenericFlow__Group_6__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_6__0__Impl_in_rule__GenericFlow__Group_6__020514);
+            rule__GenericFlow__Group_6__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_6__1_in_rule__GenericFlow__Group_6__020517);
+            rule__GenericFlow__Group_6__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_6__0"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_6__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10244:1: rule__GenericFlow__Group_6__0__Impl : ( 'destinationSoftwareComponent' ) ;
+    public final void rule__GenericFlow__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10248:1: ( ( 'destinationSoftwareComponent' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10249:1: ( 'destinationSoftwareComponent' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10249:1: ( 'destinationSoftwareComponent' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10250:1: 'destinationSoftwareComponent'
+            {
+             before(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentKeyword_6_0()); 
+            match(input,77,FollowSets000.FOLLOW_77_in_rule__GenericFlow__Group_6__0__Impl20545); 
+             after(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentKeyword_6_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_6__0__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_6__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10263:1: rule__GenericFlow__Group_6__1 : rule__GenericFlow__Group_6__1__Impl ;
+    public final void rule__GenericFlow__Group_6__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10267:1: ( rule__GenericFlow__Group_6__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10268:2: rule__GenericFlow__Group_6__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_6__1__Impl_in_rule__GenericFlow__Group_6__120576);
+            rule__GenericFlow__Group_6__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_6__1"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_6__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10274:1: rule__GenericFlow__Group_6__1__Impl : ( ( rule__GenericFlow__DestinationSoftwareComponentAssignment_6_1 ) ) ;
+    public final void rule__GenericFlow__Group_6__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10278:1: ( ( ( rule__GenericFlow__DestinationSoftwareComponentAssignment_6_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10279:1: ( ( rule__GenericFlow__DestinationSoftwareComponentAssignment_6_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10279:1: ( ( rule__GenericFlow__DestinationSoftwareComponentAssignment_6_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10280:1: ( rule__GenericFlow__DestinationSoftwareComponentAssignment_6_1 )
+            {
+             before(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentAssignment_6_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10281:1: ( rule__GenericFlow__DestinationSoftwareComponentAssignment_6_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10281:2: rule__GenericFlow__DestinationSoftwareComponentAssignment_6_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__DestinationSoftwareComponentAssignment_6_1_in_rule__GenericFlow__Group_6__1__Impl20603);
+            rule__GenericFlow__DestinationSoftwareComponentAssignment_6_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentAssignment_6_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_6__1__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_7__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10295:1: rule__GenericFlow__Group_7__0 : rule__GenericFlow__Group_7__0__Impl rule__GenericFlow__Group_7__1 ;
+    public final void rule__GenericFlow__Group_7__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10299:1: ( rule__GenericFlow__Group_7__0__Impl rule__GenericFlow__Group_7__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10300:2: rule__GenericFlow__Group_7__0__Impl rule__GenericFlow__Group_7__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_7__0__Impl_in_rule__GenericFlow__Group_7__020637);
+            rule__GenericFlow__Group_7__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_7__1_in_rule__GenericFlow__Group_7__020640);
+            rule__GenericFlow__Group_7__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_7__0"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_7__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10307:1: rule__GenericFlow__Group_7__0__Impl : ( 'sourceSoftwareComponent' ) ;
+    public final void rule__GenericFlow__Group_7__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10311:1: ( ( 'sourceSoftwareComponent' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10312:1: ( 'sourceSoftwareComponent' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10312:1: ( 'sourceSoftwareComponent' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10313:1: 'sourceSoftwareComponent'
+            {
+             before(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentKeyword_7_0()); 
+            match(input,78,FollowSets000.FOLLOW_78_in_rule__GenericFlow__Group_7__0__Impl20668); 
+             after(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentKeyword_7_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_7__0__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_7__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10326:1: rule__GenericFlow__Group_7__1 : rule__GenericFlow__Group_7__1__Impl ;
+    public final void rule__GenericFlow__Group_7__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10330:1: ( rule__GenericFlow__Group_7__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10331:2: rule__GenericFlow__Group_7__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_7__1__Impl_in_rule__GenericFlow__Group_7__120699);
+            rule__GenericFlow__Group_7__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_7__1"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_7__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10337:1: rule__GenericFlow__Group_7__1__Impl : ( ( rule__GenericFlow__SourceSoftwareComponentAssignment_7_1 ) ) ;
+    public final void rule__GenericFlow__Group_7__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10341:1: ( ( ( rule__GenericFlow__SourceSoftwareComponentAssignment_7_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10342:1: ( ( rule__GenericFlow__SourceSoftwareComponentAssignment_7_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10342:1: ( ( rule__GenericFlow__SourceSoftwareComponentAssignment_7_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10343:1: ( rule__GenericFlow__SourceSoftwareComponentAssignment_7_1 )
+            {
+             before(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentAssignment_7_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10344:1: ( rule__GenericFlow__SourceSoftwareComponentAssignment_7_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10344:2: rule__GenericFlow__SourceSoftwareComponentAssignment_7_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__SourceSoftwareComponentAssignment_7_1_in_rule__GenericFlow__Group_7__1__Impl20726);
+            rule__GenericFlow__SourceSoftwareComponentAssignment_7_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentAssignment_7_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_7__1__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_8__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10358:1: rule__GenericFlow__Group_8__0 : rule__GenericFlow__Group_8__0__Impl rule__GenericFlow__Group_8__1 ;
+    public final void rule__GenericFlow__Group_8__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10362:1: ( rule__GenericFlow__Group_8__0__Impl rule__GenericFlow__Group_8__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10363:2: rule__GenericFlow__Group_8__0__Impl rule__GenericFlow__Group_8__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_8__0__Impl_in_rule__GenericFlow__Group_8__020760);
+            rule__GenericFlow__Group_8__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_8__1_in_rule__GenericFlow__Group_8__020763);
+            rule__GenericFlow__Group_8__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_8__0"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_8__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10370:1: rule__GenericFlow__Group_8__0__Impl : ( 'destinationAddresses' ) ;
+    public final void rule__GenericFlow__Group_8__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10374:1: ( ( 'destinationAddresses' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10375:1: ( 'destinationAddresses' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10375:1: ( 'destinationAddresses' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10376:1: 'destinationAddresses'
+            {
+             before(grammarAccess.getGenericFlowAccess().getDestinationAddressesKeyword_8_0()); 
+            match(input,79,FollowSets000.FOLLOW_79_in_rule__GenericFlow__Group_8__0__Impl20791); 
+             after(grammarAccess.getGenericFlowAccess().getDestinationAddressesKeyword_8_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_8__0__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_8__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10389:1: rule__GenericFlow__Group_8__1 : rule__GenericFlow__Group_8__1__Impl rule__GenericFlow__Group_8__2 ;
+    public final void rule__GenericFlow__Group_8__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10393:1: ( rule__GenericFlow__Group_8__1__Impl rule__GenericFlow__Group_8__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10394:2: rule__GenericFlow__Group_8__1__Impl rule__GenericFlow__Group_8__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_8__1__Impl_in_rule__GenericFlow__Group_8__120822);
+            rule__GenericFlow__Group_8__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_8__2_in_rule__GenericFlow__Group_8__120825);
+            rule__GenericFlow__Group_8__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_8__1"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_8__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10401:1: rule__GenericFlow__Group_8__1__Impl : ( '{' ) ;
+    public final void rule__GenericFlow__Group_8__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10405:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10406:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10406:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10407:1: '{'
+            {
+             before(grammarAccess.getGenericFlowAccess().getLeftCurlyBracketKeyword_8_1()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__GenericFlow__Group_8__1__Impl20853); 
+             after(grammarAccess.getGenericFlowAccess().getLeftCurlyBracketKeyword_8_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_8__1__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_8__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10420:1: rule__GenericFlow__Group_8__2 : rule__GenericFlow__Group_8__2__Impl rule__GenericFlow__Group_8__3 ;
+    public final void rule__GenericFlow__Group_8__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10424:1: ( rule__GenericFlow__Group_8__2__Impl rule__GenericFlow__Group_8__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10425:2: rule__GenericFlow__Group_8__2__Impl rule__GenericFlow__Group_8__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_8__2__Impl_in_rule__GenericFlow__Group_8__220884);
+            rule__GenericFlow__Group_8__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_8__3_in_rule__GenericFlow__Group_8__220887);
+            rule__GenericFlow__Group_8__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_8__2"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_8__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10432:1: rule__GenericFlow__Group_8__2__Impl : ( ( rule__GenericFlow__DestinationAddressesAssignment_8_2 ) ) ;
+    public final void rule__GenericFlow__Group_8__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10436:1: ( ( ( rule__GenericFlow__DestinationAddressesAssignment_8_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10437:1: ( ( rule__GenericFlow__DestinationAddressesAssignment_8_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10437:1: ( ( rule__GenericFlow__DestinationAddressesAssignment_8_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10438:1: ( rule__GenericFlow__DestinationAddressesAssignment_8_2 )
+            {
+             before(grammarAccess.getGenericFlowAccess().getDestinationAddressesAssignment_8_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10439:1: ( rule__GenericFlow__DestinationAddressesAssignment_8_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10439:2: rule__GenericFlow__DestinationAddressesAssignment_8_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__DestinationAddressesAssignment_8_2_in_rule__GenericFlow__Group_8__2__Impl20914);
+            rule__GenericFlow__DestinationAddressesAssignment_8_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGenericFlowAccess().getDestinationAddressesAssignment_8_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_8__2__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_8__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10449:1: rule__GenericFlow__Group_8__3 : rule__GenericFlow__Group_8__3__Impl rule__GenericFlow__Group_8__4 ;
+    public final void rule__GenericFlow__Group_8__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10453:1: ( rule__GenericFlow__Group_8__3__Impl rule__GenericFlow__Group_8__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10454:2: rule__GenericFlow__Group_8__3__Impl rule__GenericFlow__Group_8__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_8__3__Impl_in_rule__GenericFlow__Group_8__320944);
+            rule__GenericFlow__Group_8__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_8__4_in_rule__GenericFlow__Group_8__320947);
+            rule__GenericFlow__Group_8__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_8__3"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_8__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10461:1: rule__GenericFlow__Group_8__3__Impl : ( ( rule__GenericFlow__Group_8_3__0 )* ) ;
+    public final void rule__GenericFlow__Group_8__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10465:1: ( ( ( rule__GenericFlow__Group_8_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10466:1: ( ( rule__GenericFlow__Group_8_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10466:1: ( ( rule__GenericFlow__Group_8_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10467:1: ( rule__GenericFlow__Group_8_3__0 )*
+            {
+             before(grammarAccess.getGenericFlowAccess().getGroup_8_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10468:1: ( rule__GenericFlow__Group_8_3__0 )*
+            loop48:
+            do {
+                int alt48=2;
+                int LA48_0 = input.LA(1);
+
+                if ( (LA48_0==31) ) {
+                    alt48=1;
+                }
+
+
+                switch (alt48) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10468:2: rule__GenericFlow__Group_8_3__0
+            	    {
+            	    pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_8_3__0_in_rule__GenericFlow__Group_8__3__Impl20974);
+            	    rule__GenericFlow__Group_8_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop48;
+                }
+            } while (true);
+
+             after(grammarAccess.getGenericFlowAccess().getGroup_8_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_8__3__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_8__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10478:1: rule__GenericFlow__Group_8__4 : rule__GenericFlow__Group_8__4__Impl ;
+    public final void rule__GenericFlow__Group_8__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10482:1: ( rule__GenericFlow__Group_8__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10483:2: rule__GenericFlow__Group_8__4__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_8__4__Impl_in_rule__GenericFlow__Group_8__421005);
+            rule__GenericFlow__Group_8__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_8__4"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_8__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10489:1: rule__GenericFlow__Group_8__4__Impl : ( '}' ) ;
+    public final void rule__GenericFlow__Group_8__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10493:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10494:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10494:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10495:1: '}'
+            {
+             before(grammarAccess.getGenericFlowAccess().getRightCurlyBracketKeyword_8_4()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__GenericFlow__Group_8__4__Impl21033); 
+             after(grammarAccess.getGenericFlowAccess().getRightCurlyBracketKeyword_8_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_8__4__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_8_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10518:1: rule__GenericFlow__Group_8_3__0 : rule__GenericFlow__Group_8_3__0__Impl rule__GenericFlow__Group_8_3__1 ;
+    public final void rule__GenericFlow__Group_8_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10522:1: ( rule__GenericFlow__Group_8_3__0__Impl rule__GenericFlow__Group_8_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10523:2: rule__GenericFlow__Group_8_3__0__Impl rule__GenericFlow__Group_8_3__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_8_3__0__Impl_in_rule__GenericFlow__Group_8_3__021074);
+            rule__GenericFlow__Group_8_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_8_3__1_in_rule__GenericFlow__Group_8_3__021077);
+            rule__GenericFlow__Group_8_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_8_3__0"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_8_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10530:1: rule__GenericFlow__Group_8_3__0__Impl : ( ',' ) ;
+    public final void rule__GenericFlow__Group_8_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10534:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10535:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10535:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10536:1: ','
+            {
+             before(grammarAccess.getGenericFlowAccess().getCommaKeyword_8_3_0()); 
+            match(input,31,FollowSets000.FOLLOW_31_in_rule__GenericFlow__Group_8_3__0__Impl21105); 
+             after(grammarAccess.getGenericFlowAccess().getCommaKeyword_8_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_8_3__0__Impl"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_8_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10549:1: rule__GenericFlow__Group_8_3__1 : rule__GenericFlow__Group_8_3__1__Impl ;
+    public final void rule__GenericFlow__Group_8_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10553:1: ( rule__GenericFlow__Group_8_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10554:2: rule__GenericFlow__Group_8_3__1__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__Group_8_3__1__Impl_in_rule__GenericFlow__Group_8_3__121136);
+            rule__GenericFlow__Group_8_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_8_3__1"
+
+
+    // $ANTLR start "rule__GenericFlow__Group_8_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10560:1: rule__GenericFlow__Group_8_3__1__Impl : ( ( rule__GenericFlow__DestinationAddressesAssignment_8_3_1 ) ) ;
+    public final void rule__GenericFlow__Group_8_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10564:1: ( ( ( rule__GenericFlow__DestinationAddressesAssignment_8_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10565:1: ( ( rule__GenericFlow__DestinationAddressesAssignment_8_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10565:1: ( ( rule__GenericFlow__DestinationAddressesAssignment_8_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10566:1: ( rule__GenericFlow__DestinationAddressesAssignment_8_3_1 )
+            {
+             before(grammarAccess.getGenericFlowAccess().getDestinationAddressesAssignment_8_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10567:1: ( rule__GenericFlow__DestinationAddressesAssignment_8_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10567:2: rule__GenericFlow__DestinationAddressesAssignment_8_3_1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__GenericFlow__DestinationAddressesAssignment_8_3_1_in_rule__GenericFlow__Group_8_3__1__Impl21163);
+            rule__GenericFlow__DestinationAddressesAssignment_8_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGenericFlowAccess().getDestinationAddressesAssignment_8_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__Group_8_3__1__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10581:1: rule__NetworkProtocol__Group__0 : rule__NetworkProtocol__Group__0__Impl rule__NetworkProtocol__Group__1 ;
+    public final void rule__NetworkProtocol__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10585:1: ( rule__NetworkProtocol__Group__0__Impl rule__NetworkProtocol__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10586:2: rule__NetworkProtocol__Group__0__Impl rule__NetworkProtocol__Group__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__0__Impl_in_rule__NetworkProtocol__Group__021197);
+            rule__NetworkProtocol__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__1_in_rule__NetworkProtocol__Group__021200);
+            rule__NetworkProtocol__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__0"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10593:1: rule__NetworkProtocol__Group__0__Impl : ( ( rule__NetworkProtocol__DeliveryGuaranteedAssignment_0 )? ) ;
+    public final void rule__NetworkProtocol__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10597:1: ( ( ( rule__NetworkProtocol__DeliveryGuaranteedAssignment_0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10598:1: ( ( rule__NetworkProtocol__DeliveryGuaranteedAssignment_0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10598:1: ( ( rule__NetworkProtocol__DeliveryGuaranteedAssignment_0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10599:1: ( rule__NetworkProtocol__DeliveryGuaranteedAssignment_0 )?
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getDeliveryGuaranteedAssignment_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10600:1: ( rule__NetworkProtocol__DeliveryGuaranteedAssignment_0 )?
+            int alt49=2;
+            int LA49_0 = input.LA(1);
+
+            if ( (LA49_0==160) ) {
+                alt49=1;
+            }
+            switch (alt49) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10600:2: rule__NetworkProtocol__DeliveryGuaranteedAssignment_0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__DeliveryGuaranteedAssignment_0_in_rule__NetworkProtocol__Group__0__Impl21227);
+                    rule__NetworkProtocol__DeliveryGuaranteedAssignment_0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getNetworkProtocolAccess().getDeliveryGuaranteedAssignment_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__0__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10610:1: rule__NetworkProtocol__Group__1 : rule__NetworkProtocol__Group__1__Impl rule__NetworkProtocol__Group__2 ;
+    public final void rule__NetworkProtocol__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10614:1: ( rule__NetworkProtocol__Group__1__Impl rule__NetworkProtocol__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10615:2: rule__NetworkProtocol__Group__1__Impl rule__NetworkProtocol__Group__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__1__Impl_in_rule__NetworkProtocol__Group__121258);
+            rule__NetworkProtocol__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__2_in_rule__NetworkProtocol__Group__121261);
+            rule__NetworkProtocol__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__1"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10622:1: rule__NetworkProtocol__Group__1__Impl : ( 'NetworkProtocol' ) ;
+    public final void rule__NetworkProtocol__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10626:1: ( ( 'NetworkProtocol' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10627:1: ( 'NetworkProtocol' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10627:1: ( 'NetworkProtocol' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10628:1: 'NetworkProtocol'
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getNetworkProtocolKeyword_1()); 
+            match(input,82,FollowSets000.FOLLOW_82_in_rule__NetworkProtocol__Group__1__Impl21289); 
+             after(grammarAccess.getNetworkProtocolAccess().getNetworkProtocolKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__1__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10641:1: rule__NetworkProtocol__Group__2 : rule__NetworkProtocol__Group__2__Impl rule__NetworkProtocol__Group__3 ;
+    public final void rule__NetworkProtocol__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10645:1: ( rule__NetworkProtocol__Group__2__Impl rule__NetworkProtocol__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10646:2: rule__NetworkProtocol__Group__2__Impl rule__NetworkProtocol__Group__3
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__2__Impl_in_rule__NetworkProtocol__Group__221320);
+            rule__NetworkProtocol__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__3_in_rule__NetworkProtocol__Group__221323);
+            rule__NetworkProtocol__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__2"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10653:1: rule__NetworkProtocol__Group__2__Impl : ( ( rule__NetworkProtocol__NameAssignment_2 ) ) ;
+    public final void rule__NetworkProtocol__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10657:1: ( ( ( rule__NetworkProtocol__NameAssignment_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10658:1: ( ( rule__NetworkProtocol__NameAssignment_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10658:1: ( ( rule__NetworkProtocol__NameAssignment_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10659:1: ( rule__NetworkProtocol__NameAssignment_2 )
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getNameAssignment_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10660:1: ( rule__NetworkProtocol__NameAssignment_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10660:2: rule__NetworkProtocol__NameAssignment_2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__NameAssignment_2_in_rule__NetworkProtocol__Group__2__Impl21350);
+            rule__NetworkProtocol__NameAssignment_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkProtocolAccess().getNameAssignment_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__2__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10670:1: rule__NetworkProtocol__Group__3 : rule__NetworkProtocol__Group__3__Impl rule__NetworkProtocol__Group__4 ;
+    public final void rule__NetworkProtocol__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10674:1: ( rule__NetworkProtocol__Group__3__Impl rule__NetworkProtocol__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10675:2: rule__NetworkProtocol__Group__3__Impl rule__NetworkProtocol__Group__4
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__3__Impl_in_rule__NetworkProtocol__Group__321380);
+            rule__NetworkProtocol__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__4_in_rule__NetworkProtocol__Group__321383);
+            rule__NetworkProtocol__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__3"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10682:1: rule__NetworkProtocol__Group__3__Impl : ( '{' ) ;
+    public final void rule__NetworkProtocol__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10686:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10687:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10687:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10688:1: '{'
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getLeftCurlyBracketKeyword_3()); 
+            match(input,23,FollowSets000.FOLLOW_23_in_rule__NetworkProtocol__Group__3__Impl21411); 
+             after(grammarAccess.getNetworkProtocolAccess().getLeftCurlyBracketKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__3__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10701:1: rule__NetworkProtocol__Group__4 : rule__NetworkProtocol__Group__4__Impl rule__NetworkProtocol__Group__5 ;
+    public final void rule__NetworkProtocol__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10705:1: ( rule__NetworkProtocol__Group__4__Impl rule__NetworkProtocol__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10706:2: rule__NetworkProtocol__Group__4__Impl rule__NetworkProtocol__Group__5
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__4__Impl_in_rule__NetworkProtocol__Group__421442);
+            rule__NetworkProtocol__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__5_in_rule__NetworkProtocol__Group__421445);
+            rule__NetworkProtocol__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__4"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10713:1: rule__NetworkProtocol__Group__4__Impl : ( ( rule__NetworkProtocol__Group_4__0 )? ) ;
+    public final void rule__NetworkProtocol__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10717:1: ( ( ( rule__NetworkProtocol__Group_4__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10718:1: ( ( rule__NetworkProtocol__Group_4__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10718:1: ( ( rule__NetworkProtocol__Group_4__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10719:1: ( rule__NetworkProtocol__Group_4__0 )?
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getGroup_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10720:1: ( rule__NetworkProtocol__Group_4__0 )?
+            int alt50=2;
+            int LA50_0 = input.LA(1);
+
+            if ( (LA50_0==67) ) {
+                alt50=1;
+            }
+            switch (alt50) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10720:2: rule__NetworkProtocol__Group_4__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group_4__0_in_rule__NetworkProtocol__Group__4__Impl21472);
+                    rule__NetworkProtocol__Group_4__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getNetworkProtocolAccess().getGroup_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__4__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10730:1: rule__NetworkProtocol__Group__5 : rule__NetworkProtocol__Group__5__Impl rule__NetworkProtocol__Group__6 ;
+    public final void rule__NetworkProtocol__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10734:1: ( rule__NetworkProtocol__Group__5__Impl rule__NetworkProtocol__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10735:2: rule__NetworkProtocol__Group__5__Impl rule__NetworkProtocol__Group__6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__5__Impl_in_rule__NetworkProtocol__Group__521503);
+            rule__NetworkProtocol__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__6_in_rule__NetworkProtocol__Group__521506);
+            rule__NetworkProtocol__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__5"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10742:1: rule__NetworkProtocol__Group__5__Impl : ( 'mtu' ) ;
+    public final void rule__NetworkProtocol__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10746:1: ( ( 'mtu' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10747:1: ( 'mtu' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10747:1: ( 'mtu' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10748:1: 'mtu'
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getMtuKeyword_5()); 
+            match(input,83,FollowSets000.FOLLOW_83_in_rule__NetworkProtocol__Group__5__Impl21534); 
+             after(grammarAccess.getNetworkProtocolAccess().getMtuKeyword_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__5__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10761:1: rule__NetworkProtocol__Group__6 : rule__NetworkProtocol__Group__6__Impl rule__NetworkProtocol__Group__7 ;
+    public final void rule__NetworkProtocol__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10765:1: ( rule__NetworkProtocol__Group__6__Impl rule__NetworkProtocol__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10766:2: rule__NetworkProtocol__Group__6__Impl rule__NetworkProtocol__Group__7
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__6__Impl_in_rule__NetworkProtocol__Group__621565);
+            rule__NetworkProtocol__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__7_in_rule__NetworkProtocol__Group__621568);
+            rule__NetworkProtocol__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__6"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10773:1: rule__NetworkProtocol__Group__6__Impl : ( ( rule__NetworkProtocol__MtuAssignment_6 ) ) ;
+    public final void rule__NetworkProtocol__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10777:1: ( ( ( rule__NetworkProtocol__MtuAssignment_6 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10778:1: ( ( rule__NetworkProtocol__MtuAssignment_6 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10778:1: ( ( rule__NetworkProtocol__MtuAssignment_6 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10779:1: ( rule__NetworkProtocol__MtuAssignment_6 )
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getMtuAssignment_6()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10780:1: ( rule__NetworkProtocol__MtuAssignment_6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10780:2: rule__NetworkProtocol__MtuAssignment_6
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__MtuAssignment_6_in_rule__NetworkProtocol__Group__6__Impl21595);
+            rule__NetworkProtocol__MtuAssignment_6();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkProtocolAccess().getMtuAssignment_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__6__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10790:1: rule__NetworkProtocol__Group__7 : rule__NetworkProtocol__Group__7__Impl rule__NetworkProtocol__Group__8 ;
+    public final void rule__NetworkProtocol__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10794:1: ( rule__NetworkProtocol__Group__7__Impl rule__NetworkProtocol__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10795:2: rule__NetworkProtocol__Group__7__Impl rule__NetworkProtocol__Group__8
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__7__Impl_in_rule__NetworkProtocol__Group__721625);
+            rule__NetworkProtocol__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__8_in_rule__NetworkProtocol__Group__721628);
+            rule__NetworkProtocol__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__7"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10802:1: rule__NetworkProtocol__Group__7__Impl : ( 'headersLength' ) ;
+    public final void rule__NetworkProtocol__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10806:1: ( ( 'headersLength' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10807:1: ( 'headersLength' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10807:1: ( 'headersLength' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10808:1: 'headersLength'
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getHeadersLengthKeyword_7()); 
+            match(input,84,FollowSets000.FOLLOW_84_in_rule__NetworkProtocol__Group__7__Impl21656); 
+             after(grammarAccess.getNetworkProtocolAccess().getHeadersLengthKeyword_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__7__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10821:1: rule__NetworkProtocol__Group__8 : rule__NetworkProtocol__Group__8__Impl rule__NetworkProtocol__Group__9 ;
+    public final void rule__NetworkProtocol__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10825:1: ( rule__NetworkProtocol__Group__8__Impl rule__NetworkProtocol__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10826:2: rule__NetworkProtocol__Group__8__Impl rule__NetworkProtocol__Group__9
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__8__Impl_in_rule__NetworkProtocol__Group__821687);
+            rule__NetworkProtocol__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__9_in_rule__NetworkProtocol__Group__821690);
+            rule__NetworkProtocol__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__8"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10833:1: rule__NetworkProtocol__Group__8__Impl : ( ( rule__NetworkProtocol__HeadersLengthAssignment_8 ) ) ;
+    public final void rule__NetworkProtocol__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10837:1: ( ( ( rule__NetworkProtocol__HeadersLengthAssignment_8 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10838:1: ( ( rule__NetworkProtocol__HeadersLengthAssignment_8 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10838:1: ( ( rule__NetworkProtocol__HeadersLengthAssignment_8 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10839:1: ( rule__NetworkProtocol__HeadersLengthAssignment_8 )
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getHeadersLengthAssignment_8()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10840:1: ( rule__NetworkProtocol__HeadersLengthAssignment_8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10840:2: rule__NetworkProtocol__HeadersLengthAssignment_8
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__HeadersLengthAssignment_8_in_rule__NetworkProtocol__Group__8__Impl21717);
+            rule__NetworkProtocol__HeadersLengthAssignment_8();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkProtocolAccess().getHeadersLengthAssignment_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__8__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10850:1: rule__NetworkProtocol__Group__9 : rule__NetworkProtocol__Group__9__Impl rule__NetworkProtocol__Group__10 ;
+    public final void rule__NetworkProtocol__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10854:1: ( rule__NetworkProtocol__Group__9__Impl rule__NetworkProtocol__Group__10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10855:2: rule__NetworkProtocol__Group__9__Impl rule__NetworkProtocol__Group__10
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__9__Impl_in_rule__NetworkProtocol__Group__921747);
+            rule__NetworkProtocol__Group__9__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__10_in_rule__NetworkProtocol__Group__921750);
+            rule__NetworkProtocol__Group__10();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__9"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10862:1: rule__NetworkProtocol__Group__9__Impl : ( 'dataUnitLength' ) ;
+    public final void rule__NetworkProtocol__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10866:1: ( ( 'dataUnitLength' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10867:1: ( 'dataUnitLength' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10867:1: ( 'dataUnitLength' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10868:1: 'dataUnitLength'
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getDataUnitLengthKeyword_9()); 
+            match(input,85,FollowSets000.FOLLOW_85_in_rule__NetworkProtocol__Group__9__Impl21778); 
+             after(grammarAccess.getNetworkProtocolAccess().getDataUnitLengthKeyword_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__9__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10881:1: rule__NetworkProtocol__Group__10 : rule__NetworkProtocol__Group__10__Impl rule__NetworkProtocol__Group__11 ;
+    public final void rule__NetworkProtocol__Group__10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10885:1: ( rule__NetworkProtocol__Group__10__Impl rule__NetworkProtocol__Group__11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10886:2: rule__NetworkProtocol__Group__10__Impl rule__NetworkProtocol__Group__11
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__10__Impl_in_rule__NetworkProtocol__Group__1021809);
+            rule__NetworkProtocol__Group__10__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__11_in_rule__NetworkProtocol__Group__1021812);
+            rule__NetworkProtocol__Group__11();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__10"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__10__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10893:1: rule__NetworkProtocol__Group__10__Impl : ( ( rule__NetworkProtocol__DataUnitLengthAssignment_10 ) ) ;
+    public final void rule__NetworkProtocol__Group__10__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10897:1: ( ( ( rule__NetworkProtocol__DataUnitLengthAssignment_10 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10898:1: ( ( rule__NetworkProtocol__DataUnitLengthAssignment_10 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10898:1: ( ( rule__NetworkProtocol__DataUnitLengthAssignment_10 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10899:1: ( rule__NetworkProtocol__DataUnitLengthAssignment_10 )
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getDataUnitLengthAssignment_10()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10900:1: ( rule__NetworkProtocol__DataUnitLengthAssignment_10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10900:2: rule__NetworkProtocol__DataUnitLengthAssignment_10
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__DataUnitLengthAssignment_10_in_rule__NetworkProtocol__Group__10__Impl21839);
+            rule__NetworkProtocol__DataUnitLengthAssignment_10();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkProtocolAccess().getDataUnitLengthAssignment_10()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__10__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10910:1: rule__NetworkProtocol__Group__11 : rule__NetworkProtocol__Group__11__Impl rule__NetworkProtocol__Group__12 ;
+    public final void rule__NetworkProtocol__Group__11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10914:1: ( rule__NetworkProtocol__Group__11__Impl rule__NetworkProtocol__Group__12 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10915:2: rule__NetworkProtocol__Group__11__Impl rule__NetworkProtocol__Group__12
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__11__Impl_in_rule__NetworkProtocol__Group__1121869);
+            rule__NetworkProtocol__Group__11__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__12_in_rule__NetworkProtocol__Group__1121872);
+            rule__NetworkProtocol__Group__12();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__11"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__11__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10922:1: rule__NetworkProtocol__Group__11__Impl : ( ( rule__NetworkProtocol__Group_11__0 )? ) ;
+    public final void rule__NetworkProtocol__Group__11__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10926:1: ( ( ( rule__NetworkProtocol__Group_11__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10927:1: ( ( rule__NetworkProtocol__Group_11__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10927:1: ( ( rule__NetworkProtocol__Group_11__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10928:1: ( rule__NetworkProtocol__Group_11__0 )?
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getGroup_11()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10929:1: ( rule__NetworkProtocol__Group_11__0 )?
+            int alt51=2;
+            int LA51_0 = input.LA(1);
+
+            if ( (LA51_0==86) ) {
+                alt51=1;
+            }
+            switch (alt51) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10929:2: rule__NetworkProtocol__Group_11__0
+                    {
+                    pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group_11__0_in_rule__NetworkProtocol__Group__11__Impl21899);
+                    rule__NetworkProtocol__Group_11__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getNetworkProtocolAccess().getGroup_11()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__11__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__12"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10939:1: rule__NetworkProtocol__Group__12 : rule__NetworkProtocol__Group__12__Impl ;
+    public final void rule__NetworkProtocol__Group__12() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10943:1: ( rule__NetworkProtocol__Group__12__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10944:2: rule__NetworkProtocol__Group__12__Impl
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group__12__Impl_in_rule__NetworkProtocol__Group__1221930);
+            rule__NetworkProtocol__Group__12__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__12"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group__12__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10950:1: rule__NetworkProtocol__Group__12__Impl : ( '}' ) ;
+    public final void rule__NetworkProtocol__Group__12__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10954:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10955:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10955:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10956:1: '}'
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getRightCurlyBracketKeyword_12()); 
+            match(input,29,FollowSets000.FOLLOW_29_in_rule__NetworkProtocol__Group__12__Impl21958); 
+             after(grammarAccess.getNetworkProtocolAccess().getRightCurlyBracketKeyword_12()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group__12__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group_4__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10995:1: rule__NetworkProtocol__Group_4__0 : rule__NetworkProtocol__Group_4__0__Impl rule__NetworkProtocol__Group_4__1 ;
+    public final void rule__NetworkProtocol__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:10999:1: ( rule__NetworkProtocol__Group_4__0__Impl rule__NetworkProtocol__Group_4__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11000:2: rule__NetworkProtocol__Group_4__0__Impl rule__NetworkProtocol__Group_4__1
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group_4__0__Impl_in_rule__NetworkProtocol__Group_4__022015);
+            rule__NetworkProtocol__Group_4__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group_4__1_in_rule__NetworkProtocol__Group_4__022018);
+            rule__NetworkProtocol__Group_4__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group_4__0"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group_4__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11007:1: rule__NetworkProtocol__Group_4__0__Impl : ( 'alternativeNames' ) ;
+    public final void rule__NetworkProtocol__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11011:1: ( ( 'alternativeNames' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11012:1: ( 'alternativeNames' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11012:1: ( 'alternativeNames' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11013:1: 'alternativeNames'
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesKeyword_4_0()); 
+            match(input,67,FollowSets000.FOLLOW_67_in_rule__NetworkProtocol__Group_4__0__Impl22046); 
+             after(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesKeyword_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group_4__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11026:1: rule__NetworkProtocol__Group_4__1 : rule__NetworkProtocol__Group_4__1__Impl rule__NetworkProtocol__Group_4__2 ;
+    public final void rule__NetworkProtocol__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11030:1: ( rule__NetworkProtocol__Group_4__1__Impl rule__NetworkProtocol__Group_4__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11031:2: rule__NetworkProtocol__Group_4__1__Impl rule__NetworkProtocol__Group_4__2
+            {
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group_4__1__Impl_in_rule__NetworkProtocol__Group_4__122077);
+            rule__NetworkProtocol__Group_4__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets000.FOLLOW_rule__NetworkProtocol__Group_4__2_in_rule__NetworkProtocol__Group_4__122080);
+            rule__NetworkProtocol__Group_4__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group_4__1"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group_4__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11038:1: rule__NetworkProtocol__Group_4__1__Impl : ( '{' ) ;
+    public final void rule__NetworkProtocol__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11042:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11043:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11043:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11044:1: '{'
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getLeftCurlyBracketKeyword_4_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__NetworkProtocol__Group_4__1__Impl22108); 
+             after(grammarAccess.getNetworkProtocolAccess().getLeftCurlyBracketKeyword_4_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group_4__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11057:1: rule__NetworkProtocol__Group_4__2 : rule__NetworkProtocol__Group_4__2__Impl rule__NetworkProtocol__Group_4__3 ;
+    public final void rule__NetworkProtocol__Group_4__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11061:1: ( rule__NetworkProtocol__Group_4__2__Impl rule__NetworkProtocol__Group_4__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11062:2: rule__NetworkProtocol__Group_4__2__Impl rule__NetworkProtocol__Group_4__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__NetworkProtocol__Group_4__2__Impl_in_rule__NetworkProtocol__Group_4__222139);
+            rule__NetworkProtocol__Group_4__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__NetworkProtocol__Group_4__3_in_rule__NetworkProtocol__Group_4__222142);
+            rule__NetworkProtocol__Group_4__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group_4__2"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group_4__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11069:1: rule__NetworkProtocol__Group_4__2__Impl : ( ( rule__NetworkProtocol__AlternativeNamesAssignment_4_2 ) ) ;
+    public final void rule__NetworkProtocol__Group_4__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11073:1: ( ( ( rule__NetworkProtocol__AlternativeNamesAssignment_4_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11074:1: ( ( rule__NetworkProtocol__AlternativeNamesAssignment_4_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11074:1: ( ( rule__NetworkProtocol__AlternativeNamesAssignment_4_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11075:1: ( rule__NetworkProtocol__AlternativeNamesAssignment_4_2 )
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesAssignment_4_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11076:1: ( rule__NetworkProtocol__AlternativeNamesAssignment_4_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11076:2: rule__NetworkProtocol__AlternativeNamesAssignment_4_2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__NetworkProtocol__AlternativeNamesAssignment_4_2_in_rule__NetworkProtocol__Group_4__2__Impl22169);
+            rule__NetworkProtocol__AlternativeNamesAssignment_4_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesAssignment_4_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group_4__2__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group_4__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11086:1: rule__NetworkProtocol__Group_4__3 : rule__NetworkProtocol__Group_4__3__Impl rule__NetworkProtocol__Group_4__4 ;
+    public final void rule__NetworkProtocol__Group_4__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11090:1: ( rule__NetworkProtocol__Group_4__3__Impl rule__NetworkProtocol__Group_4__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11091:2: rule__NetworkProtocol__Group_4__3__Impl rule__NetworkProtocol__Group_4__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__NetworkProtocol__Group_4__3__Impl_in_rule__NetworkProtocol__Group_4__322199);
+            rule__NetworkProtocol__Group_4__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__NetworkProtocol__Group_4__4_in_rule__NetworkProtocol__Group_4__322202);
+            rule__NetworkProtocol__Group_4__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group_4__3"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group_4__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11098:1: rule__NetworkProtocol__Group_4__3__Impl : ( ( rule__NetworkProtocol__Group_4_3__0 )* ) ;
+    public final void rule__NetworkProtocol__Group_4__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11102:1: ( ( ( rule__NetworkProtocol__Group_4_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11103:1: ( ( rule__NetworkProtocol__Group_4_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11103:1: ( ( rule__NetworkProtocol__Group_4_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11104:1: ( rule__NetworkProtocol__Group_4_3__0 )*
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getGroup_4_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11105:1: ( rule__NetworkProtocol__Group_4_3__0 )*
+            loop52:
+            do {
+                int alt52=2;
+                int LA52_0 = input.LA(1);
+
+                if ( (LA52_0==31) ) {
+                    alt52=1;
+                }
+
+
+                switch (alt52) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11105:2: rule__NetworkProtocol__Group_4_3__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__NetworkProtocol__Group_4_3__0_in_rule__NetworkProtocol__Group_4__3__Impl22229);
+            	    rule__NetworkProtocol__Group_4_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop52;
+                }
+            } while (true);
+
+             after(grammarAccess.getNetworkProtocolAccess().getGroup_4_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group_4__3__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group_4__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11115:1: rule__NetworkProtocol__Group_4__4 : rule__NetworkProtocol__Group_4__4__Impl ;
+    public final void rule__NetworkProtocol__Group_4__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11119:1: ( rule__NetworkProtocol__Group_4__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11120:2: rule__NetworkProtocol__Group_4__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__NetworkProtocol__Group_4__4__Impl_in_rule__NetworkProtocol__Group_4__422260);
+            rule__NetworkProtocol__Group_4__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group_4__4"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group_4__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11126:1: rule__NetworkProtocol__Group_4__4__Impl : ( '}' ) ;
+    public final void rule__NetworkProtocol__Group_4__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11130:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11131:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11131:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11132:1: '}'
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getRightCurlyBracketKeyword_4_4()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__NetworkProtocol__Group_4__4__Impl22288); 
+             after(grammarAccess.getNetworkProtocolAccess().getRightCurlyBracketKeyword_4_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group_4__4__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group_4_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11155:1: rule__NetworkProtocol__Group_4_3__0 : rule__NetworkProtocol__Group_4_3__0__Impl rule__NetworkProtocol__Group_4_3__1 ;
+    public final void rule__NetworkProtocol__Group_4_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11159:1: ( rule__NetworkProtocol__Group_4_3__0__Impl rule__NetworkProtocol__Group_4_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11160:2: rule__NetworkProtocol__Group_4_3__0__Impl rule__NetworkProtocol__Group_4_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__NetworkProtocol__Group_4_3__0__Impl_in_rule__NetworkProtocol__Group_4_3__022329);
+            rule__NetworkProtocol__Group_4_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__NetworkProtocol__Group_4_3__1_in_rule__NetworkProtocol__Group_4_3__022332);
+            rule__NetworkProtocol__Group_4_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group_4_3__0"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group_4_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11167:1: rule__NetworkProtocol__Group_4_3__0__Impl : ( ',' ) ;
+    public final void rule__NetworkProtocol__Group_4_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11171:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11172:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11172:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11173:1: ','
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getCommaKeyword_4_3_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__NetworkProtocol__Group_4_3__0__Impl22360); 
+             after(grammarAccess.getNetworkProtocolAccess().getCommaKeyword_4_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group_4_3__0__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group_4_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11186:1: rule__NetworkProtocol__Group_4_3__1 : rule__NetworkProtocol__Group_4_3__1__Impl ;
+    public final void rule__NetworkProtocol__Group_4_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11190:1: ( rule__NetworkProtocol__Group_4_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11191:2: rule__NetworkProtocol__Group_4_3__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__NetworkProtocol__Group_4_3__1__Impl_in_rule__NetworkProtocol__Group_4_3__122391);
+            rule__NetworkProtocol__Group_4_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group_4_3__1"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group_4_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11197:1: rule__NetworkProtocol__Group_4_3__1__Impl : ( ( rule__NetworkProtocol__AlternativeNamesAssignment_4_3_1 ) ) ;
+    public final void rule__NetworkProtocol__Group_4_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11201:1: ( ( ( rule__NetworkProtocol__AlternativeNamesAssignment_4_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11202:1: ( ( rule__NetworkProtocol__AlternativeNamesAssignment_4_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11202:1: ( ( rule__NetworkProtocol__AlternativeNamesAssignment_4_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11203:1: ( rule__NetworkProtocol__AlternativeNamesAssignment_4_3_1 )
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesAssignment_4_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11204:1: ( rule__NetworkProtocol__AlternativeNamesAssignment_4_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11204:2: rule__NetworkProtocol__AlternativeNamesAssignment_4_3_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__NetworkProtocol__AlternativeNamesAssignment_4_3_1_in_rule__NetworkProtocol__Group_4_3__1__Impl22418);
+            rule__NetworkProtocol__AlternativeNamesAssignment_4_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesAssignment_4_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group_4_3__1__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group_11__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11218:1: rule__NetworkProtocol__Group_11__0 : rule__NetworkProtocol__Group_11__0__Impl rule__NetworkProtocol__Group_11__1 ;
+    public final void rule__NetworkProtocol__Group_11__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11222:1: ( rule__NetworkProtocol__Group_11__0__Impl rule__NetworkProtocol__Group_11__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11223:2: rule__NetworkProtocol__Group_11__0__Impl rule__NetworkProtocol__Group_11__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__NetworkProtocol__Group_11__0__Impl_in_rule__NetworkProtocol__Group_11__022452);
+            rule__NetworkProtocol__Group_11__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__NetworkProtocol__Group_11__1_in_rule__NetworkProtocol__Group_11__022455);
+            rule__NetworkProtocol__Group_11__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group_11__0"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group_11__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11230:1: rule__NetworkProtocol__Group_11__0__Impl : ( 'connectionless' ) ;
+    public final void rule__NetworkProtocol__Group_11__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11234:1: ( ( 'connectionless' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11235:1: ( 'connectionless' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11235:1: ( 'connectionless' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11236:1: 'connectionless'
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getConnectionlessKeyword_11_0()); 
+            match(input,86,FollowSets001.FOLLOW_86_in_rule__NetworkProtocol__Group_11__0__Impl22483); 
+             after(grammarAccess.getNetworkProtocolAccess().getConnectionlessKeyword_11_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group_11__0__Impl"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group_11__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11249:1: rule__NetworkProtocol__Group_11__1 : rule__NetworkProtocol__Group_11__1__Impl ;
+    public final void rule__NetworkProtocol__Group_11__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11253:1: ( rule__NetworkProtocol__Group_11__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11254:2: rule__NetworkProtocol__Group_11__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__NetworkProtocol__Group_11__1__Impl_in_rule__NetworkProtocol__Group_11__122514);
+            rule__NetworkProtocol__Group_11__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group_11__1"
+
+
+    // $ANTLR start "rule__NetworkProtocol__Group_11__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11260:1: rule__NetworkProtocol__Group_11__1__Impl : ( ( rule__NetworkProtocol__ConnectionlessAssignment_11_1 ) ) ;
+    public final void rule__NetworkProtocol__Group_11__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11264:1: ( ( ( rule__NetworkProtocol__ConnectionlessAssignment_11_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11265:1: ( ( rule__NetworkProtocol__ConnectionlessAssignment_11_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11265:1: ( ( rule__NetworkProtocol__ConnectionlessAssignment_11_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11266:1: ( rule__NetworkProtocol__ConnectionlessAssignment_11_1 )
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getConnectionlessAssignment_11_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11267:1: ( rule__NetworkProtocol__ConnectionlessAssignment_11_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11267:2: rule__NetworkProtocol__ConnectionlessAssignment_11_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__NetworkProtocol__ConnectionlessAssignment_11_1_in_rule__NetworkProtocol__Group_11__1__Impl22541);
+            rule__NetworkProtocol__ConnectionlessAssignment_11_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getNetworkProtocolAccess().getConnectionlessAssignment_11_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__Group_11__1__Impl"
+
+
+    // $ANTLR start "rule__EInt__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11281:1: rule__EInt__Group__0 : rule__EInt__Group__0__Impl rule__EInt__Group__1 ;
+    public final void rule__EInt__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11285:1: ( rule__EInt__Group__0__Impl rule__EInt__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11286:2: rule__EInt__Group__0__Impl rule__EInt__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EInt__Group__0__Impl_in_rule__EInt__Group__022575);
+            rule__EInt__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__EInt__Group__1_in_rule__EInt__Group__022578);
+            rule__EInt__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EInt__Group__0"
+
+
+    // $ANTLR start "rule__EInt__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11293:1: rule__EInt__Group__0__Impl : ( ( '-' )? ) ;
+    public final void rule__EInt__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11297:1: ( ( ( '-' )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11298:1: ( ( '-' )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11298:1: ( ( '-' )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11299:1: ( '-' )?
+            {
+             before(grammarAccess.getEIntAccess().getHyphenMinusKeyword_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11300:1: ( '-' )?
+            int alt53=2;
+            int LA53_0 = input.LA(1);
+
+            if ( (LA53_0==87) ) {
+                alt53=1;
+            }
+            switch (alt53) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11301:2: '-'
+                    {
+                    match(input,87,FollowSets001.FOLLOW_87_in_rule__EInt__Group__0__Impl22607); 
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEIntAccess().getHyphenMinusKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EInt__Group__0__Impl"
+
+
+    // $ANTLR start "rule__EInt__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11312:1: rule__EInt__Group__1 : rule__EInt__Group__1__Impl ;
+    public final void rule__EInt__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11316:1: ( rule__EInt__Group__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11317:2: rule__EInt__Group__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EInt__Group__1__Impl_in_rule__EInt__Group__122640);
+            rule__EInt__Group__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EInt__Group__1"
+
+
+    // $ANTLR start "rule__EInt__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11323:1: rule__EInt__Group__1__Impl : ( RULE_INT ) ;
+    public final void rule__EInt__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11327:1: ( ( RULE_INT ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11328:1: ( RULE_INT )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11328:1: ( RULE_INT )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11329:1: RULE_INT
+            {
+             before(grammarAccess.getEIntAccess().getINTTerminalRuleCall_1()); 
+            match(input,RULE_INT,FollowSets001.FOLLOW_RULE_INT_in_rule__EInt__Group__1__Impl22667); 
+             after(grammarAccess.getEIntAccess().getINTTerminalRuleCall_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EInt__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ConstantDoubleVariable__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11344:1: rule__ConstantDoubleVariable__Group__0 : rule__ConstantDoubleVariable__Group__0__Impl rule__ConstantDoubleVariable__Group__1 ;
+    public final void rule__ConstantDoubleVariable__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11348:1: ( rule__ConstantDoubleVariable__Group__0__Impl rule__ConstantDoubleVariable__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11349:2: rule__ConstantDoubleVariable__Group__0__Impl rule__ConstantDoubleVariable__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantDoubleVariable__Group__0__Impl_in_rule__ConstantDoubleVariable__Group__022700);
+            rule__ConstantDoubleVariable__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantDoubleVariable__Group__1_in_rule__ConstantDoubleVariable__Group__022703);
+            rule__ConstantDoubleVariable__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantDoubleVariable__Group__0"
+
+
+    // $ANTLR start "rule__ConstantDoubleVariable__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11356:1: rule__ConstantDoubleVariable__Group__0__Impl : ( 'ConstantDoubleVariable' ) ;
+    public final void rule__ConstantDoubleVariable__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11360:1: ( ( 'ConstantDoubleVariable' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11361:1: ( 'ConstantDoubleVariable' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11361:1: ( 'ConstantDoubleVariable' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11362:1: 'ConstantDoubleVariable'
+            {
+             before(grammarAccess.getConstantDoubleVariableAccess().getConstantDoubleVariableKeyword_0()); 
+            match(input,88,FollowSets001.FOLLOW_88_in_rule__ConstantDoubleVariable__Group__0__Impl22731); 
+             after(grammarAccess.getConstantDoubleVariableAccess().getConstantDoubleVariableKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantDoubleVariable__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ConstantDoubleVariable__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11375:1: rule__ConstantDoubleVariable__Group__1 : rule__ConstantDoubleVariable__Group__1__Impl rule__ConstantDoubleVariable__Group__2 ;
+    public final void rule__ConstantDoubleVariable__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11379:1: ( rule__ConstantDoubleVariable__Group__1__Impl rule__ConstantDoubleVariable__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11380:2: rule__ConstantDoubleVariable__Group__1__Impl rule__ConstantDoubleVariable__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantDoubleVariable__Group__1__Impl_in_rule__ConstantDoubleVariable__Group__122762);
+            rule__ConstantDoubleVariable__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantDoubleVariable__Group__2_in_rule__ConstantDoubleVariable__Group__122765);
+            rule__ConstantDoubleVariable__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantDoubleVariable__Group__1"
+
+
+    // $ANTLR start "rule__ConstantDoubleVariable__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11387:1: rule__ConstantDoubleVariable__Group__1__Impl : ( '{' ) ;
+    public final void rule__ConstantDoubleVariable__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11391:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11392:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11392:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11393:1: '{'
+            {
+             before(grammarAccess.getConstantDoubleVariableAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__ConstantDoubleVariable__Group__1__Impl22793); 
+             after(grammarAccess.getConstantDoubleVariableAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantDoubleVariable__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ConstantDoubleVariable__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11406:1: rule__ConstantDoubleVariable__Group__2 : rule__ConstantDoubleVariable__Group__2__Impl rule__ConstantDoubleVariable__Group__3 ;
+    public final void rule__ConstantDoubleVariable__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11410:1: ( rule__ConstantDoubleVariable__Group__2__Impl rule__ConstantDoubleVariable__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11411:2: rule__ConstantDoubleVariable__Group__2__Impl rule__ConstantDoubleVariable__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantDoubleVariable__Group__2__Impl_in_rule__ConstantDoubleVariable__Group__222824);
+            rule__ConstantDoubleVariable__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantDoubleVariable__Group__3_in_rule__ConstantDoubleVariable__Group__222827);
+            rule__ConstantDoubleVariable__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantDoubleVariable__Group__2"
+
+
+    // $ANTLR start "rule__ConstantDoubleVariable__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11418:1: rule__ConstantDoubleVariable__Group__2__Impl : ( 'value' ) ;
+    public final void rule__ConstantDoubleVariable__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11422:1: ( ( 'value' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11423:1: ( 'value' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11423:1: ( 'value' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11424:1: 'value'
+            {
+             before(grammarAccess.getConstantDoubleVariableAccess().getValueKeyword_2()); 
+            match(input,63,FollowSets001.FOLLOW_63_in_rule__ConstantDoubleVariable__Group__2__Impl22855); 
+             after(grammarAccess.getConstantDoubleVariableAccess().getValueKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantDoubleVariable__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ConstantDoubleVariable__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11437:1: rule__ConstantDoubleVariable__Group__3 : rule__ConstantDoubleVariable__Group__3__Impl rule__ConstantDoubleVariable__Group__4 ;
+    public final void rule__ConstantDoubleVariable__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11441:1: ( rule__ConstantDoubleVariable__Group__3__Impl rule__ConstantDoubleVariable__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11442:2: rule__ConstantDoubleVariable__Group__3__Impl rule__ConstantDoubleVariable__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantDoubleVariable__Group__3__Impl_in_rule__ConstantDoubleVariable__Group__322886);
+            rule__ConstantDoubleVariable__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantDoubleVariable__Group__4_in_rule__ConstantDoubleVariable__Group__322889);
+            rule__ConstantDoubleVariable__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantDoubleVariable__Group__3"
+
+
+    // $ANTLR start "rule__ConstantDoubleVariable__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11449:1: rule__ConstantDoubleVariable__Group__3__Impl : ( ( rule__ConstantDoubleVariable__ValueAssignment_3 ) ) ;
+    public final void rule__ConstantDoubleVariable__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11453:1: ( ( ( rule__ConstantDoubleVariable__ValueAssignment_3 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11454:1: ( ( rule__ConstantDoubleVariable__ValueAssignment_3 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11454:1: ( ( rule__ConstantDoubleVariable__ValueAssignment_3 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11455:1: ( rule__ConstantDoubleVariable__ValueAssignment_3 )
+            {
+             before(grammarAccess.getConstantDoubleVariableAccess().getValueAssignment_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11456:1: ( rule__ConstantDoubleVariable__ValueAssignment_3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11456:2: rule__ConstantDoubleVariable__ValueAssignment_3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantDoubleVariable__ValueAssignment_3_in_rule__ConstantDoubleVariable__Group__3__Impl22916);
+            rule__ConstantDoubleVariable__ValueAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getConstantDoubleVariableAccess().getValueAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantDoubleVariable__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ConstantDoubleVariable__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11466:1: rule__ConstantDoubleVariable__Group__4 : rule__ConstantDoubleVariable__Group__4__Impl rule__ConstantDoubleVariable__Group__5 ;
+    public final void rule__ConstantDoubleVariable__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11470:1: ( rule__ConstantDoubleVariable__Group__4__Impl rule__ConstantDoubleVariable__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11471:2: rule__ConstantDoubleVariable__Group__4__Impl rule__ConstantDoubleVariable__Group__5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantDoubleVariable__Group__4__Impl_in_rule__ConstantDoubleVariable__Group__422946);
+            rule__ConstantDoubleVariable__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantDoubleVariable__Group__5_in_rule__ConstantDoubleVariable__Group__422949);
+            rule__ConstantDoubleVariable__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantDoubleVariable__Group__4"
+
+
+    // $ANTLR start "rule__ConstantDoubleVariable__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11478:1: rule__ConstantDoubleVariable__Group__4__Impl : ( ( rule__ConstantDoubleVariable__Group_4__0 )? ) ;
+    public final void rule__ConstantDoubleVariable__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11482:1: ( ( ( rule__ConstantDoubleVariable__Group_4__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11483:1: ( ( rule__ConstantDoubleVariable__Group_4__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11483:1: ( ( rule__ConstantDoubleVariable__Group_4__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11484:1: ( rule__ConstantDoubleVariable__Group_4__0 )?
+            {
+             before(grammarAccess.getConstantDoubleVariableAccess().getGroup_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11485:1: ( rule__ConstantDoubleVariable__Group_4__0 )?
+            int alt54=2;
+            int LA54_0 = input.LA(1);
+
+            if ( (LA54_0==89) ) {
+                alt54=1;
+            }
+            switch (alt54) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11485:2: rule__ConstantDoubleVariable__Group_4__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__ConstantDoubleVariable__Group_4__0_in_rule__ConstantDoubleVariable__Group__4__Impl22976);
+                    rule__ConstantDoubleVariable__Group_4__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getConstantDoubleVariableAccess().getGroup_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantDoubleVariable__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ConstantDoubleVariable__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11495:1: rule__ConstantDoubleVariable__Group__5 : rule__ConstantDoubleVariable__Group__5__Impl ;
+    public final void rule__ConstantDoubleVariable__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11499:1: ( rule__ConstantDoubleVariable__Group__5__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11500:2: rule__ConstantDoubleVariable__Group__5__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantDoubleVariable__Group__5__Impl_in_rule__ConstantDoubleVariable__Group__523007);
+            rule__ConstantDoubleVariable__Group__5__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantDoubleVariable__Group__5"
+
+
+    // $ANTLR start "rule__ConstantDoubleVariable__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11506:1: rule__ConstantDoubleVariable__Group__5__Impl : ( '}' ) ;
+    public final void rule__ConstantDoubleVariable__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11510:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11511:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11511:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11512:1: '}'
+            {
+             before(grammarAccess.getConstantDoubleVariableAccess().getRightCurlyBracketKeyword_5()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__ConstantDoubleVariable__Group__5__Impl23035); 
+             after(grammarAccess.getConstantDoubleVariableAccess().getRightCurlyBracketKeyword_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantDoubleVariable__Group__5__Impl"
+
+
+    // $ANTLR start "rule__ConstantDoubleVariable__Group_4__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11537:1: rule__ConstantDoubleVariable__Group_4__0 : rule__ConstantDoubleVariable__Group_4__0__Impl rule__ConstantDoubleVariable__Group_4__1 ;
+    public final void rule__ConstantDoubleVariable__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11541:1: ( rule__ConstantDoubleVariable__Group_4__0__Impl rule__ConstantDoubleVariable__Group_4__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11542:2: rule__ConstantDoubleVariable__Group_4__0__Impl rule__ConstantDoubleVariable__Group_4__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantDoubleVariable__Group_4__0__Impl_in_rule__ConstantDoubleVariable__Group_4__023078);
+            rule__ConstantDoubleVariable__Group_4__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantDoubleVariable__Group_4__1_in_rule__ConstantDoubleVariable__Group_4__023081);
+            rule__ConstantDoubleVariable__Group_4__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantDoubleVariable__Group_4__0"
+
+
+    // $ANTLR start "rule__ConstantDoubleVariable__Group_4__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11549:1: rule__ConstantDoubleVariable__Group_4__0__Impl : ( 'unit' ) ;
+    public final void rule__ConstantDoubleVariable__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11553:1: ( ( 'unit' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11554:1: ( 'unit' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11554:1: ( 'unit' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11555:1: 'unit'
+            {
+             before(grammarAccess.getConstantDoubleVariableAccess().getUnitKeyword_4_0()); 
+            match(input,89,FollowSets001.FOLLOW_89_in_rule__ConstantDoubleVariable__Group_4__0__Impl23109); 
+             after(grammarAccess.getConstantDoubleVariableAccess().getUnitKeyword_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantDoubleVariable__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__ConstantDoubleVariable__Group_4__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11568:1: rule__ConstantDoubleVariable__Group_4__1 : rule__ConstantDoubleVariable__Group_4__1__Impl ;
+    public final void rule__ConstantDoubleVariable__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11572:1: ( rule__ConstantDoubleVariable__Group_4__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11573:2: rule__ConstantDoubleVariable__Group_4__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantDoubleVariable__Group_4__1__Impl_in_rule__ConstantDoubleVariable__Group_4__123140);
+            rule__ConstantDoubleVariable__Group_4__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantDoubleVariable__Group_4__1"
+
+
+    // $ANTLR start "rule__ConstantDoubleVariable__Group_4__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11579:1: rule__ConstantDoubleVariable__Group_4__1__Impl : ( ( rule__ConstantDoubleVariable__UnitAssignment_4_1 ) ) ;
+    public final void rule__ConstantDoubleVariable__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11583:1: ( ( ( rule__ConstantDoubleVariable__UnitAssignment_4_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11584:1: ( ( rule__ConstantDoubleVariable__UnitAssignment_4_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11584:1: ( ( rule__ConstantDoubleVariable__UnitAssignment_4_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11585:1: ( rule__ConstantDoubleVariable__UnitAssignment_4_1 )
+            {
+             before(grammarAccess.getConstantDoubleVariableAccess().getUnitAssignment_4_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11586:1: ( rule__ConstantDoubleVariable__UnitAssignment_4_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11586:2: rule__ConstantDoubleVariable__UnitAssignment_4_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantDoubleVariable__UnitAssignment_4_1_in_rule__ConstantDoubleVariable__Group_4__1__Impl23167);
+            rule__ConstantDoubleVariable__UnitAssignment_4_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getConstantDoubleVariableAccess().getUnitAssignment_4_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantDoubleVariable__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__ConstantLongVariable__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11600:1: rule__ConstantLongVariable__Group__0 : rule__ConstantLongVariable__Group__0__Impl rule__ConstantLongVariable__Group__1 ;
+    public final void rule__ConstantLongVariable__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11604:1: ( rule__ConstantLongVariable__Group__0__Impl rule__ConstantLongVariable__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11605:2: rule__ConstantLongVariable__Group__0__Impl rule__ConstantLongVariable__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantLongVariable__Group__0__Impl_in_rule__ConstantLongVariable__Group__023201);
+            rule__ConstantLongVariable__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantLongVariable__Group__1_in_rule__ConstantLongVariable__Group__023204);
+            rule__ConstantLongVariable__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantLongVariable__Group__0"
+
+
+    // $ANTLR start "rule__ConstantLongVariable__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11612:1: rule__ConstantLongVariable__Group__0__Impl : ( 'ConstantLongVariable' ) ;
+    public final void rule__ConstantLongVariable__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11616:1: ( ( 'ConstantLongVariable' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11617:1: ( 'ConstantLongVariable' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11617:1: ( 'ConstantLongVariable' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11618:1: 'ConstantLongVariable'
+            {
+             before(grammarAccess.getConstantLongVariableAccess().getConstantLongVariableKeyword_0()); 
+            match(input,90,FollowSets001.FOLLOW_90_in_rule__ConstantLongVariable__Group__0__Impl23232); 
+             after(grammarAccess.getConstantLongVariableAccess().getConstantLongVariableKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantLongVariable__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ConstantLongVariable__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11631:1: rule__ConstantLongVariable__Group__1 : rule__ConstantLongVariable__Group__1__Impl rule__ConstantLongVariable__Group__2 ;
+    public final void rule__ConstantLongVariable__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11635:1: ( rule__ConstantLongVariable__Group__1__Impl rule__ConstantLongVariable__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11636:2: rule__ConstantLongVariable__Group__1__Impl rule__ConstantLongVariable__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantLongVariable__Group__1__Impl_in_rule__ConstantLongVariable__Group__123263);
+            rule__ConstantLongVariable__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantLongVariable__Group__2_in_rule__ConstantLongVariable__Group__123266);
+            rule__ConstantLongVariable__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantLongVariable__Group__1"
+
+
+    // $ANTLR start "rule__ConstantLongVariable__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11643:1: rule__ConstantLongVariable__Group__1__Impl : ( '{' ) ;
+    public final void rule__ConstantLongVariable__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11647:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11648:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11648:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11649:1: '{'
+            {
+             before(grammarAccess.getConstantLongVariableAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__ConstantLongVariable__Group__1__Impl23294); 
+             after(grammarAccess.getConstantLongVariableAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantLongVariable__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ConstantLongVariable__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11662:1: rule__ConstantLongVariable__Group__2 : rule__ConstantLongVariable__Group__2__Impl rule__ConstantLongVariable__Group__3 ;
+    public final void rule__ConstantLongVariable__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11666:1: ( rule__ConstantLongVariable__Group__2__Impl rule__ConstantLongVariable__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11667:2: rule__ConstantLongVariable__Group__2__Impl rule__ConstantLongVariable__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantLongVariable__Group__2__Impl_in_rule__ConstantLongVariable__Group__223325);
+            rule__ConstantLongVariable__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantLongVariable__Group__3_in_rule__ConstantLongVariable__Group__223328);
+            rule__ConstantLongVariable__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantLongVariable__Group__2"
+
+
+    // $ANTLR start "rule__ConstantLongVariable__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11674:1: rule__ConstantLongVariable__Group__2__Impl : ( 'value' ) ;
+    public final void rule__ConstantLongVariable__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11678:1: ( ( 'value' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11679:1: ( 'value' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11679:1: ( 'value' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11680:1: 'value'
+            {
+             before(grammarAccess.getConstantLongVariableAccess().getValueKeyword_2()); 
+            match(input,63,FollowSets001.FOLLOW_63_in_rule__ConstantLongVariable__Group__2__Impl23356); 
+             after(grammarAccess.getConstantLongVariableAccess().getValueKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantLongVariable__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ConstantLongVariable__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11693:1: rule__ConstantLongVariable__Group__3 : rule__ConstantLongVariable__Group__3__Impl rule__ConstantLongVariable__Group__4 ;
+    public final void rule__ConstantLongVariable__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11697:1: ( rule__ConstantLongVariable__Group__3__Impl rule__ConstantLongVariable__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11698:2: rule__ConstantLongVariable__Group__3__Impl rule__ConstantLongVariable__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantLongVariable__Group__3__Impl_in_rule__ConstantLongVariable__Group__323387);
+            rule__ConstantLongVariable__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantLongVariable__Group__4_in_rule__ConstantLongVariable__Group__323390);
+            rule__ConstantLongVariable__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantLongVariable__Group__3"
+
+
+    // $ANTLR start "rule__ConstantLongVariable__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11705:1: rule__ConstantLongVariable__Group__3__Impl : ( ( rule__ConstantLongVariable__ValueAssignment_3 ) ) ;
+    public final void rule__ConstantLongVariable__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11709:1: ( ( ( rule__ConstantLongVariable__ValueAssignment_3 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11710:1: ( ( rule__ConstantLongVariable__ValueAssignment_3 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11710:1: ( ( rule__ConstantLongVariable__ValueAssignment_3 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11711:1: ( rule__ConstantLongVariable__ValueAssignment_3 )
+            {
+             before(grammarAccess.getConstantLongVariableAccess().getValueAssignment_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11712:1: ( rule__ConstantLongVariable__ValueAssignment_3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11712:2: rule__ConstantLongVariable__ValueAssignment_3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantLongVariable__ValueAssignment_3_in_rule__ConstantLongVariable__Group__3__Impl23417);
+            rule__ConstantLongVariable__ValueAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getConstantLongVariableAccess().getValueAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantLongVariable__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ConstantLongVariable__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11722:1: rule__ConstantLongVariable__Group__4 : rule__ConstantLongVariable__Group__4__Impl rule__ConstantLongVariable__Group__5 ;
+    public final void rule__ConstantLongVariable__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11726:1: ( rule__ConstantLongVariable__Group__4__Impl rule__ConstantLongVariable__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11727:2: rule__ConstantLongVariable__Group__4__Impl rule__ConstantLongVariable__Group__5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantLongVariable__Group__4__Impl_in_rule__ConstantLongVariable__Group__423447);
+            rule__ConstantLongVariable__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantLongVariable__Group__5_in_rule__ConstantLongVariable__Group__423450);
+            rule__ConstantLongVariable__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantLongVariable__Group__4"
+
+
+    // $ANTLR start "rule__ConstantLongVariable__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11734:1: rule__ConstantLongVariable__Group__4__Impl : ( ( rule__ConstantLongVariable__Group_4__0 )? ) ;
+    public final void rule__ConstantLongVariable__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11738:1: ( ( ( rule__ConstantLongVariable__Group_4__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11739:1: ( ( rule__ConstantLongVariable__Group_4__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11739:1: ( ( rule__ConstantLongVariable__Group_4__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11740:1: ( rule__ConstantLongVariable__Group_4__0 )?
+            {
+             before(grammarAccess.getConstantLongVariableAccess().getGroup_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11741:1: ( rule__ConstantLongVariable__Group_4__0 )?
+            int alt55=2;
+            int LA55_0 = input.LA(1);
+
+            if ( (LA55_0==89) ) {
+                alt55=1;
+            }
+            switch (alt55) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11741:2: rule__ConstantLongVariable__Group_4__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__ConstantLongVariable__Group_4__0_in_rule__ConstantLongVariable__Group__4__Impl23477);
+                    rule__ConstantLongVariable__Group_4__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getConstantLongVariableAccess().getGroup_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantLongVariable__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ConstantLongVariable__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11751:1: rule__ConstantLongVariable__Group__5 : rule__ConstantLongVariable__Group__5__Impl ;
+    public final void rule__ConstantLongVariable__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11755:1: ( rule__ConstantLongVariable__Group__5__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11756:2: rule__ConstantLongVariable__Group__5__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantLongVariable__Group__5__Impl_in_rule__ConstantLongVariable__Group__523508);
+            rule__ConstantLongVariable__Group__5__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantLongVariable__Group__5"
+
+
+    // $ANTLR start "rule__ConstantLongVariable__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11762:1: rule__ConstantLongVariable__Group__5__Impl : ( '}' ) ;
+    public final void rule__ConstantLongVariable__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11766:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11767:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11767:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11768:1: '}'
+            {
+             before(grammarAccess.getConstantLongVariableAccess().getRightCurlyBracketKeyword_5()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__ConstantLongVariable__Group__5__Impl23536); 
+             after(grammarAccess.getConstantLongVariableAccess().getRightCurlyBracketKeyword_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantLongVariable__Group__5__Impl"
+
+
+    // $ANTLR start "rule__ConstantLongVariable__Group_4__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11793:1: rule__ConstantLongVariable__Group_4__0 : rule__ConstantLongVariable__Group_4__0__Impl rule__ConstantLongVariable__Group_4__1 ;
+    public final void rule__ConstantLongVariable__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11797:1: ( rule__ConstantLongVariable__Group_4__0__Impl rule__ConstantLongVariable__Group_4__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11798:2: rule__ConstantLongVariable__Group_4__0__Impl rule__ConstantLongVariable__Group_4__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantLongVariable__Group_4__0__Impl_in_rule__ConstantLongVariable__Group_4__023579);
+            rule__ConstantLongVariable__Group_4__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantLongVariable__Group_4__1_in_rule__ConstantLongVariable__Group_4__023582);
+            rule__ConstantLongVariable__Group_4__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantLongVariable__Group_4__0"
+
+
+    // $ANTLR start "rule__ConstantLongVariable__Group_4__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11805:1: rule__ConstantLongVariable__Group_4__0__Impl : ( 'unit' ) ;
+    public final void rule__ConstantLongVariable__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11809:1: ( ( 'unit' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11810:1: ( 'unit' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11810:1: ( 'unit' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11811:1: 'unit'
+            {
+             before(grammarAccess.getConstantLongVariableAccess().getUnitKeyword_4_0()); 
+            match(input,89,FollowSets001.FOLLOW_89_in_rule__ConstantLongVariable__Group_4__0__Impl23610); 
+             after(grammarAccess.getConstantLongVariableAccess().getUnitKeyword_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantLongVariable__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__ConstantLongVariable__Group_4__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11824:1: rule__ConstantLongVariable__Group_4__1 : rule__ConstantLongVariable__Group_4__1__Impl ;
+    public final void rule__ConstantLongVariable__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11828:1: ( rule__ConstantLongVariable__Group_4__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11829:2: rule__ConstantLongVariable__Group_4__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantLongVariable__Group_4__1__Impl_in_rule__ConstantLongVariable__Group_4__123641);
+            rule__ConstantLongVariable__Group_4__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantLongVariable__Group_4__1"
+
+
+    // $ANTLR start "rule__ConstantLongVariable__Group_4__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11835:1: rule__ConstantLongVariable__Group_4__1__Impl : ( ( rule__ConstantLongVariable__UnitAssignment_4_1 ) ) ;
+    public final void rule__ConstantLongVariable__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11839:1: ( ( ( rule__ConstantLongVariable__UnitAssignment_4_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11840:1: ( ( rule__ConstantLongVariable__UnitAssignment_4_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11840:1: ( ( rule__ConstantLongVariable__UnitAssignment_4_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11841:1: ( rule__ConstantLongVariable__UnitAssignment_4_1 )
+            {
+             before(grammarAccess.getConstantLongVariableAccess().getUnitAssignment_4_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11842:1: ( rule__ConstantLongVariable__UnitAssignment_4_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11842:2: rule__ConstantLongVariable__UnitAssignment_4_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ConstantLongVariable__UnitAssignment_4_1_in_rule__ConstantLongVariable__Group_4__1__Impl23668);
+            rule__ConstantLongVariable__UnitAssignment_4_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getConstantLongVariableAccess().getUnitAssignment_4_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantLongVariable__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__RandomVariable__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11856:1: rule__RandomVariable__Group__0 : rule__RandomVariable__Group__0__Impl rule__RandomVariable__Group__1 ;
+    public final void rule__RandomVariable__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11860:1: ( rule__RandomVariable__Group__0__Impl rule__RandomVariable__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11861:2: rule__RandomVariable__Group__0__Impl rule__RandomVariable__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RandomVariable__Group__0__Impl_in_rule__RandomVariable__Group__023702);
+            rule__RandomVariable__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RandomVariable__Group__1_in_rule__RandomVariable__Group__023705);
+            rule__RandomVariable__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RandomVariable__Group__0"
+
+
+    // $ANTLR start "rule__RandomVariable__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11868:1: rule__RandomVariable__Group__0__Impl : ( 'RandomVariable' ) ;
+    public final void rule__RandomVariable__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11872:1: ( ( 'RandomVariable' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11873:1: ( 'RandomVariable' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11873:1: ( 'RandomVariable' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11874:1: 'RandomVariable'
+            {
+             before(grammarAccess.getRandomVariableAccess().getRandomVariableKeyword_0()); 
+            match(input,91,FollowSets001.FOLLOW_91_in_rule__RandomVariable__Group__0__Impl23733); 
+             after(grammarAccess.getRandomVariableAccess().getRandomVariableKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RandomVariable__Group__0__Impl"
+
+
+    // $ANTLR start "rule__RandomVariable__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11887:1: rule__RandomVariable__Group__1 : rule__RandomVariable__Group__1__Impl rule__RandomVariable__Group__2 ;
+    public final void rule__RandomVariable__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11891:1: ( rule__RandomVariable__Group__1__Impl rule__RandomVariable__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11892:2: rule__RandomVariable__Group__1__Impl rule__RandomVariable__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RandomVariable__Group__1__Impl_in_rule__RandomVariable__Group__123764);
+            rule__RandomVariable__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RandomVariable__Group__2_in_rule__RandomVariable__Group__123767);
+            rule__RandomVariable__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RandomVariable__Group__1"
+
+
+    // $ANTLR start "rule__RandomVariable__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11899:1: rule__RandomVariable__Group__1__Impl : ( '{' ) ;
+    public final void rule__RandomVariable__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11903:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11904:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11904:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11905:1: '{'
+            {
+             before(grammarAccess.getRandomVariableAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__RandomVariable__Group__1__Impl23795); 
+             after(grammarAccess.getRandomVariableAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RandomVariable__Group__1__Impl"
+
+
+    // $ANTLR start "rule__RandomVariable__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11918:1: rule__RandomVariable__Group__2 : rule__RandomVariable__Group__2__Impl rule__RandomVariable__Group__3 ;
+    public final void rule__RandomVariable__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11922:1: ( rule__RandomVariable__Group__2__Impl rule__RandomVariable__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11923:2: rule__RandomVariable__Group__2__Impl rule__RandomVariable__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RandomVariable__Group__2__Impl_in_rule__RandomVariable__Group__223826);
+            rule__RandomVariable__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RandomVariable__Group__3_in_rule__RandomVariable__Group__223829);
+            rule__RandomVariable__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RandomVariable__Group__2"
+
+
+    // $ANTLR start "rule__RandomVariable__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11930:1: rule__RandomVariable__Group__2__Impl : ( ( rule__RandomVariable__Group_2__0 )? ) ;
+    public final void rule__RandomVariable__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11934:1: ( ( ( rule__RandomVariable__Group_2__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11935:1: ( ( rule__RandomVariable__Group_2__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11935:1: ( ( rule__RandomVariable__Group_2__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11936:1: ( rule__RandomVariable__Group_2__0 )?
+            {
+             before(grammarAccess.getRandomVariableAccess().getGroup_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11937:1: ( rule__RandomVariable__Group_2__0 )?
+            int alt56=2;
+            int LA56_0 = input.LA(1);
+
+            if ( (LA56_0==89) ) {
+                alt56=1;
+            }
+            switch (alt56) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11937:2: rule__RandomVariable__Group_2__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__RandomVariable__Group_2__0_in_rule__RandomVariable__Group__2__Impl23856);
+                    rule__RandomVariable__Group_2__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getRandomVariableAccess().getGroup_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RandomVariable__Group__2__Impl"
+
+
+    // $ANTLR start "rule__RandomVariable__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11947:1: rule__RandomVariable__Group__3 : rule__RandomVariable__Group__3__Impl rule__RandomVariable__Group__4 ;
+    public final void rule__RandomVariable__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11951:1: ( rule__RandomVariable__Group__3__Impl rule__RandomVariable__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11952:2: rule__RandomVariable__Group__3__Impl rule__RandomVariable__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RandomVariable__Group__3__Impl_in_rule__RandomVariable__Group__323887);
+            rule__RandomVariable__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RandomVariable__Group__4_in_rule__RandomVariable__Group__323890);
+            rule__RandomVariable__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RandomVariable__Group__3"
+
+
+    // $ANTLR start "rule__RandomVariable__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11959:1: rule__RandomVariable__Group__3__Impl : ( 'cdf' ) ;
+    public final void rule__RandomVariable__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11963:1: ( ( 'cdf' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11964:1: ( 'cdf' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11964:1: ( 'cdf' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11965:1: 'cdf'
+            {
+             before(grammarAccess.getRandomVariableAccess().getCdfKeyword_3()); 
+            match(input,92,FollowSets001.FOLLOW_92_in_rule__RandomVariable__Group__3__Impl23918); 
+             after(grammarAccess.getRandomVariableAccess().getCdfKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RandomVariable__Group__3__Impl"
+
+
+    // $ANTLR start "rule__RandomVariable__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11978:1: rule__RandomVariable__Group__4 : rule__RandomVariable__Group__4__Impl rule__RandomVariable__Group__5 ;
+    public final void rule__RandomVariable__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11982:1: ( rule__RandomVariable__Group__4__Impl rule__RandomVariable__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11983:2: rule__RandomVariable__Group__4__Impl rule__RandomVariable__Group__5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RandomVariable__Group__4__Impl_in_rule__RandomVariable__Group__423949);
+            rule__RandomVariable__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RandomVariable__Group__5_in_rule__RandomVariable__Group__423952);
+            rule__RandomVariable__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RandomVariable__Group__4"
+
+
+    // $ANTLR start "rule__RandomVariable__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11990:1: rule__RandomVariable__Group__4__Impl : ( ( rule__RandomVariable__CdfAssignment_4 ) ) ;
+    public final void rule__RandomVariable__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11994:1: ( ( ( rule__RandomVariable__CdfAssignment_4 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11995:1: ( ( rule__RandomVariable__CdfAssignment_4 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11995:1: ( ( rule__RandomVariable__CdfAssignment_4 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11996:1: ( rule__RandomVariable__CdfAssignment_4 )
+            {
+             before(grammarAccess.getRandomVariableAccess().getCdfAssignment_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11997:1: ( rule__RandomVariable__CdfAssignment_4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:11997:2: rule__RandomVariable__CdfAssignment_4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RandomVariable__CdfAssignment_4_in_rule__RandomVariable__Group__4__Impl23979);
+            rule__RandomVariable__CdfAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRandomVariableAccess().getCdfAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RandomVariable__Group__4__Impl"
+
+
+    // $ANTLR start "rule__RandomVariable__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12007:1: rule__RandomVariable__Group__5 : rule__RandomVariable__Group__5__Impl ;
+    public final void rule__RandomVariable__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12011:1: ( rule__RandomVariable__Group__5__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12012:2: rule__RandomVariable__Group__5__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RandomVariable__Group__5__Impl_in_rule__RandomVariable__Group__524009);
+            rule__RandomVariable__Group__5__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RandomVariable__Group__5"
+
+
+    // $ANTLR start "rule__RandomVariable__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12018:1: rule__RandomVariable__Group__5__Impl : ( '}' ) ;
+    public final void rule__RandomVariable__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12022:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12023:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12023:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12024:1: '}'
+            {
+             before(grammarAccess.getRandomVariableAccess().getRightCurlyBracketKeyword_5()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__RandomVariable__Group__5__Impl24037); 
+             after(grammarAccess.getRandomVariableAccess().getRightCurlyBracketKeyword_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RandomVariable__Group__5__Impl"
+
+
+    // $ANTLR start "rule__RandomVariable__Group_2__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12049:1: rule__RandomVariable__Group_2__0 : rule__RandomVariable__Group_2__0__Impl rule__RandomVariable__Group_2__1 ;
+    public final void rule__RandomVariable__Group_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12053:1: ( rule__RandomVariable__Group_2__0__Impl rule__RandomVariable__Group_2__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12054:2: rule__RandomVariable__Group_2__0__Impl rule__RandomVariable__Group_2__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RandomVariable__Group_2__0__Impl_in_rule__RandomVariable__Group_2__024080);
+            rule__RandomVariable__Group_2__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RandomVariable__Group_2__1_in_rule__RandomVariable__Group_2__024083);
+            rule__RandomVariable__Group_2__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RandomVariable__Group_2__0"
+
+
+    // $ANTLR start "rule__RandomVariable__Group_2__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12061:1: rule__RandomVariable__Group_2__0__Impl : ( 'unit' ) ;
+    public final void rule__RandomVariable__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12065:1: ( ( 'unit' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12066:1: ( 'unit' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12066:1: ( 'unit' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12067:1: 'unit'
+            {
+             before(grammarAccess.getRandomVariableAccess().getUnitKeyword_2_0()); 
+            match(input,89,FollowSets001.FOLLOW_89_in_rule__RandomVariable__Group_2__0__Impl24111); 
+             after(grammarAccess.getRandomVariableAccess().getUnitKeyword_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RandomVariable__Group_2__0__Impl"
+
+
+    // $ANTLR start "rule__RandomVariable__Group_2__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12080:1: rule__RandomVariable__Group_2__1 : rule__RandomVariable__Group_2__1__Impl ;
+    public final void rule__RandomVariable__Group_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12084:1: ( rule__RandomVariable__Group_2__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12085:2: rule__RandomVariable__Group_2__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RandomVariable__Group_2__1__Impl_in_rule__RandomVariable__Group_2__124142);
+            rule__RandomVariable__Group_2__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RandomVariable__Group_2__1"
+
+
+    // $ANTLR start "rule__RandomVariable__Group_2__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12091:1: rule__RandomVariable__Group_2__1__Impl : ( ( rule__RandomVariable__UnitAssignment_2_1 ) ) ;
+    public final void rule__RandomVariable__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12095:1: ( ( ( rule__RandomVariable__UnitAssignment_2_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12096:1: ( ( rule__RandomVariable__UnitAssignment_2_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12096:1: ( ( rule__RandomVariable__UnitAssignment_2_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12097:1: ( rule__RandomVariable__UnitAssignment_2_1 )
+            {
+             before(grammarAccess.getRandomVariableAccess().getUnitAssignment_2_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12098:1: ( rule__RandomVariable__UnitAssignment_2_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12098:2: rule__RandomVariable__UnitAssignment_2_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RandomVariable__UnitAssignment_2_1_in_rule__RandomVariable__Group_2__1__Impl24169);
+            rule__RandomVariable__UnitAssignment_2_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRandomVariableAccess().getUnitAssignment_2_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RandomVariable__Group_2__1__Impl"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12112:1: rule__ContinuousFunction__Group__0 : rule__ContinuousFunction__Group__0__Impl rule__ContinuousFunction__Group__1 ;
+    public final void rule__ContinuousFunction__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12116:1: ( rule__ContinuousFunction__Group__0__Impl rule__ContinuousFunction__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12117:2: rule__ContinuousFunction__Group__0__Impl rule__ContinuousFunction__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__Group__0__Impl_in_rule__ContinuousFunction__Group__024203);
+            rule__ContinuousFunction__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__Group__1_in_rule__ContinuousFunction__Group__024206);
+            rule__ContinuousFunction__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group__0"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12124:1: rule__ContinuousFunction__Group__0__Impl : ( 'ContinuousFunction' ) ;
+    public final void rule__ContinuousFunction__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12128:1: ( ( 'ContinuousFunction' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12129:1: ( 'ContinuousFunction' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12129:1: ( 'ContinuousFunction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12130:1: 'ContinuousFunction'
+            {
+             before(grammarAccess.getContinuousFunctionAccess().getContinuousFunctionKeyword_0()); 
+            match(input,93,FollowSets001.FOLLOW_93_in_rule__ContinuousFunction__Group__0__Impl24234); 
+             after(grammarAccess.getContinuousFunctionAccess().getContinuousFunctionKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12143:1: rule__ContinuousFunction__Group__1 : rule__ContinuousFunction__Group__1__Impl rule__ContinuousFunction__Group__2 ;
+    public final void rule__ContinuousFunction__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12147:1: ( rule__ContinuousFunction__Group__1__Impl rule__ContinuousFunction__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12148:2: rule__ContinuousFunction__Group__1__Impl rule__ContinuousFunction__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__Group__1__Impl_in_rule__ContinuousFunction__Group__124265);
+            rule__ContinuousFunction__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__Group__2_in_rule__ContinuousFunction__Group__124268);
+            rule__ContinuousFunction__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group__1"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12155:1: rule__ContinuousFunction__Group__1__Impl : ( '{' ) ;
+    public final void rule__ContinuousFunction__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12159:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12160:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12160:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12161:1: '{'
+            {
+             before(grammarAccess.getContinuousFunctionAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__ContinuousFunction__Group__1__Impl24296); 
+             after(grammarAccess.getContinuousFunctionAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12174:1: rule__ContinuousFunction__Group__2 : rule__ContinuousFunction__Group__2__Impl rule__ContinuousFunction__Group__3 ;
+    public final void rule__ContinuousFunction__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12178:1: ( rule__ContinuousFunction__Group__2__Impl rule__ContinuousFunction__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12179:2: rule__ContinuousFunction__Group__2__Impl rule__ContinuousFunction__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__Group__2__Impl_in_rule__ContinuousFunction__Group__224327);
+            rule__ContinuousFunction__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__Group__3_in_rule__ContinuousFunction__Group__224330);
+            rule__ContinuousFunction__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group__2"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12186:1: rule__ContinuousFunction__Group__2__Impl : ( 'numArgs' ) ;
+    public final void rule__ContinuousFunction__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12190:1: ( ( 'numArgs' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12191:1: ( 'numArgs' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12191:1: ( 'numArgs' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12192:1: 'numArgs'
+            {
+             before(grammarAccess.getContinuousFunctionAccess().getNumArgsKeyword_2()); 
+            match(input,94,FollowSets001.FOLLOW_94_in_rule__ContinuousFunction__Group__2__Impl24358); 
+             after(grammarAccess.getContinuousFunctionAccess().getNumArgsKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12205:1: rule__ContinuousFunction__Group__3 : rule__ContinuousFunction__Group__3__Impl rule__ContinuousFunction__Group__4 ;
+    public final void rule__ContinuousFunction__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12209:1: ( rule__ContinuousFunction__Group__3__Impl rule__ContinuousFunction__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12210:2: rule__ContinuousFunction__Group__3__Impl rule__ContinuousFunction__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__Group__3__Impl_in_rule__ContinuousFunction__Group__324389);
+            rule__ContinuousFunction__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__Group__4_in_rule__ContinuousFunction__Group__324392);
+            rule__ContinuousFunction__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group__3"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12217:1: rule__ContinuousFunction__Group__3__Impl : ( ( rule__ContinuousFunction__NumArgsAssignment_3 ) ) ;
+    public final void rule__ContinuousFunction__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12221:1: ( ( ( rule__ContinuousFunction__NumArgsAssignment_3 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12222:1: ( ( rule__ContinuousFunction__NumArgsAssignment_3 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12222:1: ( ( rule__ContinuousFunction__NumArgsAssignment_3 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12223:1: ( rule__ContinuousFunction__NumArgsAssignment_3 )
+            {
+             before(grammarAccess.getContinuousFunctionAccess().getNumArgsAssignment_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12224:1: ( rule__ContinuousFunction__NumArgsAssignment_3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12224:2: rule__ContinuousFunction__NumArgsAssignment_3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__NumArgsAssignment_3_in_rule__ContinuousFunction__Group__3__Impl24419);
+            rule__ContinuousFunction__NumArgsAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getContinuousFunctionAccess().getNumArgsAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12234:1: rule__ContinuousFunction__Group__4 : rule__ContinuousFunction__Group__4__Impl rule__ContinuousFunction__Group__5 ;
+    public final void rule__ContinuousFunction__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12238:1: ( rule__ContinuousFunction__Group__4__Impl rule__ContinuousFunction__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12239:2: rule__ContinuousFunction__Group__4__Impl rule__ContinuousFunction__Group__5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__Group__4__Impl_in_rule__ContinuousFunction__Group__424449);
+            rule__ContinuousFunction__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__Group__5_in_rule__ContinuousFunction__Group__424452);
+            rule__ContinuousFunction__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group__4"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12246:1: rule__ContinuousFunction__Group__4__Impl : ( 'equation' ) ;
+    public final void rule__ContinuousFunction__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12250:1: ( ( 'equation' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12251:1: ( 'equation' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12251:1: ( 'equation' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12252:1: 'equation'
+            {
+             before(grammarAccess.getContinuousFunctionAccess().getEquationKeyword_4()); 
+            match(input,95,FollowSets001.FOLLOW_95_in_rule__ContinuousFunction__Group__4__Impl24480); 
+             after(grammarAccess.getContinuousFunctionAccess().getEquationKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12265:1: rule__ContinuousFunction__Group__5 : rule__ContinuousFunction__Group__5__Impl rule__ContinuousFunction__Group__6 ;
+    public final void rule__ContinuousFunction__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12269:1: ( rule__ContinuousFunction__Group__5__Impl rule__ContinuousFunction__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12270:2: rule__ContinuousFunction__Group__5__Impl rule__ContinuousFunction__Group__6
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__Group__5__Impl_in_rule__ContinuousFunction__Group__524511);
+            rule__ContinuousFunction__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__Group__6_in_rule__ContinuousFunction__Group__524514);
+            rule__ContinuousFunction__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group__5"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12277:1: rule__ContinuousFunction__Group__5__Impl : ( ( rule__ContinuousFunction__EquationAssignment_5 ) ) ;
+    public final void rule__ContinuousFunction__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12281:1: ( ( ( rule__ContinuousFunction__EquationAssignment_5 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12282:1: ( ( rule__ContinuousFunction__EquationAssignment_5 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12282:1: ( ( rule__ContinuousFunction__EquationAssignment_5 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12283:1: ( rule__ContinuousFunction__EquationAssignment_5 )
+            {
+             before(grammarAccess.getContinuousFunctionAccess().getEquationAssignment_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12284:1: ( rule__ContinuousFunction__EquationAssignment_5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12284:2: rule__ContinuousFunction__EquationAssignment_5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__EquationAssignment_5_in_rule__ContinuousFunction__Group__5__Impl24541);
+            rule__ContinuousFunction__EquationAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getContinuousFunctionAccess().getEquationAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group__5__Impl"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12294:1: rule__ContinuousFunction__Group__6 : rule__ContinuousFunction__Group__6__Impl rule__ContinuousFunction__Group__7 ;
+    public final void rule__ContinuousFunction__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12298:1: ( rule__ContinuousFunction__Group__6__Impl rule__ContinuousFunction__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12299:2: rule__ContinuousFunction__Group__6__Impl rule__ContinuousFunction__Group__7
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__Group__6__Impl_in_rule__ContinuousFunction__Group__624571);
+            rule__ContinuousFunction__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__Group__7_in_rule__ContinuousFunction__Group__624574);
+            rule__ContinuousFunction__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group__6"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12306:1: rule__ContinuousFunction__Group__6__Impl : ( ( rule__ContinuousFunction__Group_6__0 )? ) ;
+    public final void rule__ContinuousFunction__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12310:1: ( ( ( rule__ContinuousFunction__Group_6__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12311:1: ( ( rule__ContinuousFunction__Group_6__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12311:1: ( ( rule__ContinuousFunction__Group_6__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12312:1: ( rule__ContinuousFunction__Group_6__0 )?
+            {
+             before(grammarAccess.getContinuousFunctionAccess().getGroup_6()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12313:1: ( rule__ContinuousFunction__Group_6__0 )?
+            int alt57=2;
+            int LA57_0 = input.LA(1);
+
+            if ( (LA57_0==89) ) {
+                alt57=1;
+            }
+            switch (alt57) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12313:2: rule__ContinuousFunction__Group_6__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__Group_6__0_in_rule__ContinuousFunction__Group__6__Impl24601);
+                    rule__ContinuousFunction__Group_6__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getContinuousFunctionAccess().getGroup_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group__6__Impl"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12323:1: rule__ContinuousFunction__Group__7 : rule__ContinuousFunction__Group__7__Impl ;
+    public final void rule__ContinuousFunction__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12327:1: ( rule__ContinuousFunction__Group__7__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12328:2: rule__ContinuousFunction__Group__7__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__Group__7__Impl_in_rule__ContinuousFunction__Group__724632);
+            rule__ContinuousFunction__Group__7__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group__7"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12334:1: rule__ContinuousFunction__Group__7__Impl : ( '}' ) ;
+    public final void rule__ContinuousFunction__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12338:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12339:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12339:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12340:1: '}'
+            {
+             before(grammarAccess.getContinuousFunctionAccess().getRightCurlyBracketKeyword_7()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__ContinuousFunction__Group__7__Impl24660); 
+             after(grammarAccess.getContinuousFunctionAccess().getRightCurlyBracketKeyword_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group__7__Impl"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group_6__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12369:1: rule__ContinuousFunction__Group_6__0 : rule__ContinuousFunction__Group_6__0__Impl rule__ContinuousFunction__Group_6__1 ;
+    public final void rule__ContinuousFunction__Group_6__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12373:1: ( rule__ContinuousFunction__Group_6__0__Impl rule__ContinuousFunction__Group_6__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12374:2: rule__ContinuousFunction__Group_6__0__Impl rule__ContinuousFunction__Group_6__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__Group_6__0__Impl_in_rule__ContinuousFunction__Group_6__024707);
+            rule__ContinuousFunction__Group_6__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__Group_6__1_in_rule__ContinuousFunction__Group_6__024710);
+            rule__ContinuousFunction__Group_6__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group_6__0"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group_6__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12381:1: rule__ContinuousFunction__Group_6__0__Impl : ( 'unit' ) ;
+    public final void rule__ContinuousFunction__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12385:1: ( ( 'unit' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12386:1: ( 'unit' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12386:1: ( 'unit' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12387:1: 'unit'
+            {
+             before(grammarAccess.getContinuousFunctionAccess().getUnitKeyword_6_0()); 
+            match(input,89,FollowSets001.FOLLOW_89_in_rule__ContinuousFunction__Group_6__0__Impl24738); 
+             after(grammarAccess.getContinuousFunctionAccess().getUnitKeyword_6_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group_6__0__Impl"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group_6__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12400:1: rule__ContinuousFunction__Group_6__1 : rule__ContinuousFunction__Group_6__1__Impl ;
+    public final void rule__ContinuousFunction__Group_6__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12404:1: ( rule__ContinuousFunction__Group_6__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12405:2: rule__ContinuousFunction__Group_6__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__Group_6__1__Impl_in_rule__ContinuousFunction__Group_6__124769);
+            rule__ContinuousFunction__Group_6__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group_6__1"
+
+
+    // $ANTLR start "rule__ContinuousFunction__Group_6__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12411:1: rule__ContinuousFunction__Group_6__1__Impl : ( ( rule__ContinuousFunction__UnitAssignment_6_1 ) ) ;
+    public final void rule__ContinuousFunction__Group_6__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12415:1: ( ( ( rule__ContinuousFunction__UnitAssignment_6_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12416:1: ( ( rule__ContinuousFunction__UnitAssignment_6_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12416:1: ( ( rule__ContinuousFunction__UnitAssignment_6_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12417:1: ( rule__ContinuousFunction__UnitAssignment_6_1 )
+            {
+             before(grammarAccess.getContinuousFunctionAccess().getUnitAssignment_6_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12418:1: ( rule__ContinuousFunction__UnitAssignment_6_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12418:2: rule__ContinuousFunction__UnitAssignment_6_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ContinuousFunction__UnitAssignment_6_1_in_rule__ContinuousFunction__Group_6__1__Impl24796);
+            rule__ContinuousFunction__UnitAssignment_6_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getContinuousFunctionAccess().getUnitAssignment_6_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__Group_6__1__Impl"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12432:1: rule__DiscreteFunction__Group__0 : rule__DiscreteFunction__Group__0__Impl rule__DiscreteFunction__Group__1 ;
+    public final void rule__DiscreteFunction__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12436:1: ( rule__DiscreteFunction__Group__0__Impl rule__DiscreteFunction__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12437:2: rule__DiscreteFunction__Group__0__Impl rule__DiscreteFunction__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__0__Impl_in_rule__DiscreteFunction__Group__024830);
+            rule__DiscreteFunction__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__1_in_rule__DiscreteFunction__Group__024833);
+            rule__DiscreteFunction__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__0"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12444:1: rule__DiscreteFunction__Group__0__Impl : ( 'DiscreteFunction' ) ;
+    public final void rule__DiscreteFunction__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12448:1: ( ( 'DiscreteFunction' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12449:1: ( 'DiscreteFunction' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12449:1: ( 'DiscreteFunction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12450:1: 'DiscreteFunction'
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getDiscreteFunctionKeyword_0()); 
+            match(input,96,FollowSets001.FOLLOW_96_in_rule__DiscreteFunction__Group__0__Impl24861); 
+             after(grammarAccess.getDiscreteFunctionAccess().getDiscreteFunctionKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__0__Impl"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12463:1: rule__DiscreteFunction__Group__1 : rule__DiscreteFunction__Group__1__Impl rule__DiscreteFunction__Group__2 ;
+    public final void rule__DiscreteFunction__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12467:1: ( rule__DiscreteFunction__Group__1__Impl rule__DiscreteFunction__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12468:2: rule__DiscreteFunction__Group__1__Impl rule__DiscreteFunction__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__1__Impl_in_rule__DiscreteFunction__Group__124892);
+            rule__DiscreteFunction__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__2_in_rule__DiscreteFunction__Group__124895);
+            rule__DiscreteFunction__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__1"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12475:1: rule__DiscreteFunction__Group__1__Impl : ( '{' ) ;
+    public final void rule__DiscreteFunction__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12479:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12480:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12480:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12481:1: '{'
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__DiscreteFunction__Group__1__Impl24923); 
+             after(grammarAccess.getDiscreteFunctionAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__1__Impl"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12494:1: rule__DiscreteFunction__Group__2 : rule__DiscreteFunction__Group__2__Impl rule__DiscreteFunction__Group__3 ;
+    public final void rule__DiscreteFunction__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12498:1: ( rule__DiscreteFunction__Group__2__Impl rule__DiscreteFunction__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12499:2: rule__DiscreteFunction__Group__2__Impl rule__DiscreteFunction__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__2__Impl_in_rule__DiscreteFunction__Group__224954);
+            rule__DiscreteFunction__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__3_in_rule__DiscreteFunction__Group__224957);
+            rule__DiscreteFunction__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__2"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12506:1: rule__DiscreteFunction__Group__2__Impl : ( 'numArgs' ) ;
+    public final void rule__DiscreteFunction__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12510:1: ( ( 'numArgs' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12511:1: ( 'numArgs' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12511:1: ( 'numArgs' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12512:1: 'numArgs'
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getNumArgsKeyword_2()); 
+            match(input,94,FollowSets001.FOLLOW_94_in_rule__DiscreteFunction__Group__2__Impl24985); 
+             after(grammarAccess.getDiscreteFunctionAccess().getNumArgsKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__2__Impl"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12525:1: rule__DiscreteFunction__Group__3 : rule__DiscreteFunction__Group__3__Impl rule__DiscreteFunction__Group__4 ;
+    public final void rule__DiscreteFunction__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12529:1: ( rule__DiscreteFunction__Group__3__Impl rule__DiscreteFunction__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12530:2: rule__DiscreteFunction__Group__3__Impl rule__DiscreteFunction__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__3__Impl_in_rule__DiscreteFunction__Group__325016);
+            rule__DiscreteFunction__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__4_in_rule__DiscreteFunction__Group__325019);
+            rule__DiscreteFunction__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__3"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12537:1: rule__DiscreteFunction__Group__3__Impl : ( ( rule__DiscreteFunction__NumArgsAssignment_3 ) ) ;
+    public final void rule__DiscreteFunction__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12541:1: ( ( ( rule__DiscreteFunction__NumArgsAssignment_3 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12542:1: ( ( rule__DiscreteFunction__NumArgsAssignment_3 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12542:1: ( ( rule__DiscreteFunction__NumArgsAssignment_3 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12543:1: ( rule__DiscreteFunction__NumArgsAssignment_3 )
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getNumArgsAssignment_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12544:1: ( rule__DiscreteFunction__NumArgsAssignment_3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12544:2: rule__DiscreteFunction__NumArgsAssignment_3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__NumArgsAssignment_3_in_rule__DiscreteFunction__Group__3__Impl25046);
+            rule__DiscreteFunction__NumArgsAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDiscreteFunctionAccess().getNumArgsAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__3__Impl"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12554:1: rule__DiscreteFunction__Group__4 : rule__DiscreteFunction__Group__4__Impl rule__DiscreteFunction__Group__5 ;
+    public final void rule__DiscreteFunction__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12558:1: ( rule__DiscreteFunction__Group__4__Impl rule__DiscreteFunction__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12559:2: rule__DiscreteFunction__Group__4__Impl rule__DiscreteFunction__Group__5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__4__Impl_in_rule__DiscreteFunction__Group__425076);
+            rule__DiscreteFunction__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__5_in_rule__DiscreteFunction__Group__425079);
+            rule__DiscreteFunction__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__4"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12566:1: rule__DiscreteFunction__Group__4__Impl : ( ( rule__DiscreteFunction__Group_4__0 )? ) ;
+    public final void rule__DiscreteFunction__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12570:1: ( ( ( rule__DiscreteFunction__Group_4__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12571:1: ( ( rule__DiscreteFunction__Group_4__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12571:1: ( ( rule__DiscreteFunction__Group_4__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12572:1: ( rule__DiscreteFunction__Group_4__0 )?
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getGroup_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12573:1: ( rule__DiscreteFunction__Group_4__0 )?
+            int alt58=2;
+            int LA58_0 = input.LA(1);
+
+            if ( (LA58_0==89) ) {
+                alt58=1;
+            }
+            switch (alt58) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12573:2: rule__DiscreteFunction__Group_4__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group_4__0_in_rule__DiscreteFunction__Group__4__Impl25106);
+                    rule__DiscreteFunction__Group_4__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getDiscreteFunctionAccess().getGroup_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__4__Impl"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12583:1: rule__DiscreteFunction__Group__5 : rule__DiscreteFunction__Group__5__Impl rule__DiscreteFunction__Group__6 ;
+    public final void rule__DiscreteFunction__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12587:1: ( rule__DiscreteFunction__Group__5__Impl rule__DiscreteFunction__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12588:2: rule__DiscreteFunction__Group__5__Impl rule__DiscreteFunction__Group__6
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__5__Impl_in_rule__DiscreteFunction__Group__525137);
+            rule__DiscreteFunction__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__6_in_rule__DiscreteFunction__Group__525140);
+            rule__DiscreteFunction__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__5"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12595:1: rule__DiscreteFunction__Group__5__Impl : ( 'x' ) ;
+    public final void rule__DiscreteFunction__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12599:1: ( ( 'x' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12600:1: ( 'x' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12600:1: ( 'x' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12601:1: 'x'
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getXKeyword_5()); 
+            match(input,97,FollowSets001.FOLLOW_97_in_rule__DiscreteFunction__Group__5__Impl25168); 
+             after(grammarAccess.getDiscreteFunctionAccess().getXKeyword_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__5__Impl"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12614:1: rule__DiscreteFunction__Group__6 : rule__DiscreteFunction__Group__6__Impl rule__DiscreteFunction__Group__7 ;
+    public final void rule__DiscreteFunction__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12618:1: ( rule__DiscreteFunction__Group__6__Impl rule__DiscreteFunction__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12619:2: rule__DiscreteFunction__Group__6__Impl rule__DiscreteFunction__Group__7
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__6__Impl_in_rule__DiscreteFunction__Group__625199);
+            rule__DiscreteFunction__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__7_in_rule__DiscreteFunction__Group__625202);
+            rule__DiscreteFunction__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__6"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12626:1: rule__DiscreteFunction__Group__6__Impl : ( '{' ) ;
+    public final void rule__DiscreteFunction__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12630:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12631:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12631:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12632:1: '{'
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getLeftCurlyBracketKeyword_6()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__DiscreteFunction__Group__6__Impl25230); 
+             after(grammarAccess.getDiscreteFunctionAccess().getLeftCurlyBracketKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__6__Impl"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12645:1: rule__DiscreteFunction__Group__7 : rule__DiscreteFunction__Group__7__Impl rule__DiscreteFunction__Group__8 ;
+    public final void rule__DiscreteFunction__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12649:1: ( rule__DiscreteFunction__Group__7__Impl rule__DiscreteFunction__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12650:2: rule__DiscreteFunction__Group__7__Impl rule__DiscreteFunction__Group__8
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__7__Impl_in_rule__DiscreteFunction__Group__725261);
+            rule__DiscreteFunction__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__8_in_rule__DiscreteFunction__Group__725264);
+            rule__DiscreteFunction__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__7"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12657:1: rule__DiscreteFunction__Group__7__Impl : ( ( rule__DiscreteFunction__XAssignment_7 ) ) ;
+    public final void rule__DiscreteFunction__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12661:1: ( ( ( rule__DiscreteFunction__XAssignment_7 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12662:1: ( ( rule__DiscreteFunction__XAssignment_7 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12662:1: ( ( rule__DiscreteFunction__XAssignment_7 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12663:1: ( rule__DiscreteFunction__XAssignment_7 )
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getXAssignment_7()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12664:1: ( rule__DiscreteFunction__XAssignment_7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12664:2: rule__DiscreteFunction__XAssignment_7
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__XAssignment_7_in_rule__DiscreteFunction__Group__7__Impl25291);
+            rule__DiscreteFunction__XAssignment_7();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDiscreteFunctionAccess().getXAssignment_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__7__Impl"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12674:1: rule__DiscreteFunction__Group__8 : rule__DiscreteFunction__Group__8__Impl rule__DiscreteFunction__Group__9 ;
+    public final void rule__DiscreteFunction__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12678:1: ( rule__DiscreteFunction__Group__8__Impl rule__DiscreteFunction__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12679:2: rule__DiscreteFunction__Group__8__Impl rule__DiscreteFunction__Group__9
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__8__Impl_in_rule__DiscreteFunction__Group__825321);
+            rule__DiscreteFunction__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__9_in_rule__DiscreteFunction__Group__825324);
+            rule__DiscreteFunction__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__8"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12686:1: rule__DiscreteFunction__Group__8__Impl : ( ( rule__DiscreteFunction__Group_8__0 )* ) ;
+    public final void rule__DiscreteFunction__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12690:1: ( ( ( rule__DiscreteFunction__Group_8__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12691:1: ( ( rule__DiscreteFunction__Group_8__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12691:1: ( ( rule__DiscreteFunction__Group_8__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12692:1: ( rule__DiscreteFunction__Group_8__0 )*
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getGroup_8()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12693:1: ( rule__DiscreteFunction__Group_8__0 )*
+            loop59:
+            do {
+                int alt59=2;
+                int LA59_0 = input.LA(1);
+
+                if ( (LA59_0==31) ) {
+                    alt59=1;
+                }
+
+
+                switch (alt59) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12693:2: rule__DiscreteFunction__Group_8__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group_8__0_in_rule__DiscreteFunction__Group__8__Impl25351);
+            	    rule__DiscreteFunction__Group_8__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop59;
+                }
+            } while (true);
+
+             after(grammarAccess.getDiscreteFunctionAccess().getGroup_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__8__Impl"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12703:1: rule__DiscreteFunction__Group__9 : rule__DiscreteFunction__Group__9__Impl rule__DiscreteFunction__Group__10 ;
+    public final void rule__DiscreteFunction__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12707:1: ( rule__DiscreteFunction__Group__9__Impl rule__DiscreteFunction__Group__10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12708:2: rule__DiscreteFunction__Group__9__Impl rule__DiscreteFunction__Group__10
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__9__Impl_in_rule__DiscreteFunction__Group__925382);
+            rule__DiscreteFunction__Group__9__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__10_in_rule__DiscreteFunction__Group__925385);
+            rule__DiscreteFunction__Group__10();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__9"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12715:1: rule__DiscreteFunction__Group__9__Impl : ( '}' ) ;
+    public final void rule__DiscreteFunction__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12719:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12720:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12720:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12721:1: '}'
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getRightCurlyBracketKeyword_9()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__DiscreteFunction__Group__9__Impl25413); 
+             after(grammarAccess.getDiscreteFunctionAccess().getRightCurlyBracketKeyword_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__9__Impl"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12734:1: rule__DiscreteFunction__Group__10 : rule__DiscreteFunction__Group__10__Impl rule__DiscreteFunction__Group__11 ;
+    public final void rule__DiscreteFunction__Group__10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12738:1: ( rule__DiscreteFunction__Group__10__Impl rule__DiscreteFunction__Group__11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12739:2: rule__DiscreteFunction__Group__10__Impl rule__DiscreteFunction__Group__11
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__10__Impl_in_rule__DiscreteFunction__Group__1025444);
+            rule__DiscreteFunction__Group__10__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__11_in_rule__DiscreteFunction__Group__1025447);
+            rule__DiscreteFunction__Group__11();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__10"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__10__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12746:1: rule__DiscreteFunction__Group__10__Impl : ( 'y' ) ;
+    public final void rule__DiscreteFunction__Group__10__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12750:1: ( ( 'y' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12751:1: ( 'y' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12751:1: ( 'y' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12752:1: 'y'
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getYKeyword_10()); 
+            match(input,98,FollowSets001.FOLLOW_98_in_rule__DiscreteFunction__Group__10__Impl25475); 
+             after(grammarAccess.getDiscreteFunctionAccess().getYKeyword_10()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__10__Impl"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12765:1: rule__DiscreteFunction__Group__11 : rule__DiscreteFunction__Group__11__Impl rule__DiscreteFunction__Group__12 ;
+    public final void rule__DiscreteFunction__Group__11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12769:1: ( rule__DiscreteFunction__Group__11__Impl rule__DiscreteFunction__Group__12 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12770:2: rule__DiscreteFunction__Group__11__Impl rule__DiscreteFunction__Group__12
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__11__Impl_in_rule__DiscreteFunction__Group__1125506);
+            rule__DiscreteFunction__Group__11__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__12_in_rule__DiscreteFunction__Group__1125509);
+            rule__DiscreteFunction__Group__12();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__11"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__11__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12777:1: rule__DiscreteFunction__Group__11__Impl : ( ( rule__DiscreteFunction__YAssignment_11 ) ) ;
+    public final void rule__DiscreteFunction__Group__11__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12781:1: ( ( ( rule__DiscreteFunction__YAssignment_11 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12782:1: ( ( rule__DiscreteFunction__YAssignment_11 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12782:1: ( ( rule__DiscreteFunction__YAssignment_11 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12783:1: ( rule__DiscreteFunction__YAssignment_11 )
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getYAssignment_11()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12784:1: ( rule__DiscreteFunction__YAssignment_11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12784:2: rule__DiscreteFunction__YAssignment_11
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__YAssignment_11_in_rule__DiscreteFunction__Group__11__Impl25536);
+            rule__DiscreteFunction__YAssignment_11();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDiscreteFunctionAccess().getYAssignment_11()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__11__Impl"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__12"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12794:1: rule__DiscreteFunction__Group__12 : rule__DiscreteFunction__Group__12__Impl ;
+    public final void rule__DiscreteFunction__Group__12() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12798:1: ( rule__DiscreteFunction__Group__12__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12799:2: rule__DiscreteFunction__Group__12__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group__12__Impl_in_rule__DiscreteFunction__Group__1225566);
+            rule__DiscreteFunction__Group__12__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__12"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group__12__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12805:1: rule__DiscreteFunction__Group__12__Impl : ( '}' ) ;
+    public final void rule__DiscreteFunction__Group__12__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12809:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12810:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12810:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12811:1: '}'
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getRightCurlyBracketKeyword_12()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__DiscreteFunction__Group__12__Impl25594); 
+             after(grammarAccess.getDiscreteFunctionAccess().getRightCurlyBracketKeyword_12()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group__12__Impl"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group_4__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12850:1: rule__DiscreteFunction__Group_4__0 : rule__DiscreteFunction__Group_4__0__Impl rule__DiscreteFunction__Group_4__1 ;
+    public final void rule__DiscreteFunction__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12854:1: ( rule__DiscreteFunction__Group_4__0__Impl rule__DiscreteFunction__Group_4__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12855:2: rule__DiscreteFunction__Group_4__0__Impl rule__DiscreteFunction__Group_4__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group_4__0__Impl_in_rule__DiscreteFunction__Group_4__025651);
+            rule__DiscreteFunction__Group_4__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group_4__1_in_rule__DiscreteFunction__Group_4__025654);
+            rule__DiscreteFunction__Group_4__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group_4__0"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group_4__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12862:1: rule__DiscreteFunction__Group_4__0__Impl : ( 'unit' ) ;
+    public final void rule__DiscreteFunction__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12866:1: ( ( 'unit' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12867:1: ( 'unit' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12867:1: ( 'unit' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12868:1: 'unit'
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getUnitKeyword_4_0()); 
+            match(input,89,FollowSets001.FOLLOW_89_in_rule__DiscreteFunction__Group_4__0__Impl25682); 
+             after(grammarAccess.getDiscreteFunctionAccess().getUnitKeyword_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group_4__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12881:1: rule__DiscreteFunction__Group_4__1 : rule__DiscreteFunction__Group_4__1__Impl ;
+    public final void rule__DiscreteFunction__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12885:1: ( rule__DiscreteFunction__Group_4__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12886:2: rule__DiscreteFunction__Group_4__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group_4__1__Impl_in_rule__DiscreteFunction__Group_4__125713);
+            rule__DiscreteFunction__Group_4__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group_4__1"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group_4__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12892:1: rule__DiscreteFunction__Group_4__1__Impl : ( ( rule__DiscreteFunction__UnitAssignment_4_1 ) ) ;
+    public final void rule__DiscreteFunction__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12896:1: ( ( ( rule__DiscreteFunction__UnitAssignment_4_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12897:1: ( ( rule__DiscreteFunction__UnitAssignment_4_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12897:1: ( ( rule__DiscreteFunction__UnitAssignment_4_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12898:1: ( rule__DiscreteFunction__UnitAssignment_4_1 )
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getUnitAssignment_4_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12899:1: ( rule__DiscreteFunction__UnitAssignment_4_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12899:2: rule__DiscreteFunction__UnitAssignment_4_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__UnitAssignment_4_1_in_rule__DiscreteFunction__Group_4__1__Impl25740);
+            rule__DiscreteFunction__UnitAssignment_4_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDiscreteFunctionAccess().getUnitAssignment_4_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group_8__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12913:1: rule__DiscreteFunction__Group_8__0 : rule__DiscreteFunction__Group_8__0__Impl rule__DiscreteFunction__Group_8__1 ;
+    public final void rule__DiscreteFunction__Group_8__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12917:1: ( rule__DiscreteFunction__Group_8__0__Impl rule__DiscreteFunction__Group_8__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12918:2: rule__DiscreteFunction__Group_8__0__Impl rule__DiscreteFunction__Group_8__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group_8__0__Impl_in_rule__DiscreteFunction__Group_8__025774);
+            rule__DiscreteFunction__Group_8__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group_8__1_in_rule__DiscreteFunction__Group_8__025777);
+            rule__DiscreteFunction__Group_8__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group_8__0"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group_8__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12925:1: rule__DiscreteFunction__Group_8__0__Impl : ( ',' ) ;
+    public final void rule__DiscreteFunction__Group_8__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12929:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12930:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12930:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12931:1: ','
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getCommaKeyword_8_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__DiscreteFunction__Group_8__0__Impl25805); 
+             after(grammarAccess.getDiscreteFunctionAccess().getCommaKeyword_8_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group_8__0__Impl"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group_8__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12944:1: rule__DiscreteFunction__Group_8__1 : rule__DiscreteFunction__Group_8__1__Impl ;
+    public final void rule__DiscreteFunction__Group_8__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12948:1: ( rule__DiscreteFunction__Group_8__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12949:2: rule__DiscreteFunction__Group_8__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__Group_8__1__Impl_in_rule__DiscreteFunction__Group_8__125836);
+            rule__DiscreteFunction__Group_8__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group_8__1"
+
+
+    // $ANTLR start "rule__DiscreteFunction__Group_8__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12955:1: rule__DiscreteFunction__Group_8__1__Impl : ( ( rule__DiscreteFunction__XAssignment_8_1 ) ) ;
+    public final void rule__DiscreteFunction__Group_8__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12959:1: ( ( ( rule__DiscreteFunction__XAssignment_8_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12960:1: ( ( rule__DiscreteFunction__XAssignment_8_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12960:1: ( ( rule__DiscreteFunction__XAssignment_8_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12961:1: ( rule__DiscreteFunction__XAssignment_8_1 )
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getXAssignment_8_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12962:1: ( rule__DiscreteFunction__XAssignment_8_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12962:2: rule__DiscreteFunction__XAssignment_8_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DiscreteFunction__XAssignment_8_1_in_rule__DiscreteFunction__Group_8__1__Impl25863);
+            rule__DiscreteFunction__XAssignment_8_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDiscreteFunctionAccess().getXAssignment_8_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__Group_8__1__Impl"
+
+
+    // $ANTLR start "rule__EFloat__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12976:1: rule__EFloat__Group__0 : rule__EFloat__Group__0__Impl rule__EFloat__Group__1 ;
+    public final void rule__EFloat__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12980:1: ( rule__EFloat__Group__0__Impl rule__EFloat__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12981:2: rule__EFloat__Group__0__Impl rule__EFloat__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EFloat__Group__0__Impl_in_rule__EFloat__Group__025897);
+            rule__EFloat__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__EFloat__Group__1_in_rule__EFloat__Group__025900);
+            rule__EFloat__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EFloat__Group__0"
+
+
+    // $ANTLR start "rule__EFloat__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12988:1: rule__EFloat__Group__0__Impl : ( ( '-' )? ) ;
+    public final void rule__EFloat__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12992:1: ( ( ( '-' )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12993:1: ( ( '-' )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12993:1: ( ( '-' )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12994:1: ( '-' )?
+            {
+             before(grammarAccess.getEFloatAccess().getHyphenMinusKeyword_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12995:1: ( '-' )?
+            int alt60=2;
+            int LA60_0 = input.LA(1);
+
+            if ( (LA60_0==87) ) {
+                alt60=1;
+            }
+            switch (alt60) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:12996:2: '-'
+                    {
+                    match(input,87,FollowSets001.FOLLOW_87_in_rule__EFloat__Group__0__Impl25929); 
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEFloatAccess().getHyphenMinusKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EFloat__Group__0__Impl"
+
+
+    // $ANTLR start "rule__EFloat__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13007:1: rule__EFloat__Group__1 : rule__EFloat__Group__1__Impl rule__EFloat__Group__2 ;
+    public final void rule__EFloat__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13011:1: ( rule__EFloat__Group__1__Impl rule__EFloat__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13012:2: rule__EFloat__Group__1__Impl rule__EFloat__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EFloat__Group__1__Impl_in_rule__EFloat__Group__125962);
+            rule__EFloat__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__EFloat__Group__2_in_rule__EFloat__Group__125965);
+            rule__EFloat__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EFloat__Group__1"
+
+
+    // $ANTLR start "rule__EFloat__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13019:1: rule__EFloat__Group__1__Impl : ( ( RULE_INT )? ) ;
+    public final void rule__EFloat__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13023:1: ( ( ( RULE_INT )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13024:1: ( ( RULE_INT )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13024:1: ( ( RULE_INT )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13025:1: ( RULE_INT )?
+            {
+             before(grammarAccess.getEFloatAccess().getINTTerminalRuleCall_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13026:1: ( RULE_INT )?
+            int alt61=2;
+            int LA61_0 = input.LA(1);
+
+            if ( (LA61_0==RULE_INT) ) {
+                alt61=1;
+            }
+            switch (alt61) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13026:3: RULE_INT
+                    {
+                    match(input,RULE_INT,FollowSets001.FOLLOW_RULE_INT_in_rule__EFloat__Group__1__Impl25993); 
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEFloatAccess().getINTTerminalRuleCall_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EFloat__Group__1__Impl"
+
+
+    // $ANTLR start "rule__EFloat__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13036:1: rule__EFloat__Group__2 : rule__EFloat__Group__2__Impl rule__EFloat__Group__3 ;
+    public final void rule__EFloat__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13040:1: ( rule__EFloat__Group__2__Impl rule__EFloat__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13041:2: rule__EFloat__Group__2__Impl rule__EFloat__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EFloat__Group__2__Impl_in_rule__EFloat__Group__226024);
+            rule__EFloat__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__EFloat__Group__3_in_rule__EFloat__Group__226027);
+            rule__EFloat__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EFloat__Group__2"
+
+
+    // $ANTLR start "rule__EFloat__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13048:1: rule__EFloat__Group__2__Impl : ( '.' ) ;
+    public final void rule__EFloat__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13052:1: ( ( '.' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13053:1: ( '.' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13053:1: ( '.' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13054:1: '.'
+            {
+             before(grammarAccess.getEFloatAccess().getFullStopKeyword_2()); 
+            match(input,99,FollowSets001.FOLLOW_99_in_rule__EFloat__Group__2__Impl26055); 
+             after(grammarAccess.getEFloatAccess().getFullStopKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EFloat__Group__2__Impl"
+
+
+    // $ANTLR start "rule__EFloat__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13067:1: rule__EFloat__Group__3 : rule__EFloat__Group__3__Impl rule__EFloat__Group__4 ;
+    public final void rule__EFloat__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13071:1: ( rule__EFloat__Group__3__Impl rule__EFloat__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13072:2: rule__EFloat__Group__3__Impl rule__EFloat__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EFloat__Group__3__Impl_in_rule__EFloat__Group__326086);
+            rule__EFloat__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__EFloat__Group__4_in_rule__EFloat__Group__326089);
+            rule__EFloat__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EFloat__Group__3"
+
+
+    // $ANTLR start "rule__EFloat__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13079:1: rule__EFloat__Group__3__Impl : ( RULE_INT ) ;
+    public final void rule__EFloat__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13083:1: ( ( RULE_INT ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13084:1: ( RULE_INT )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13084:1: ( RULE_INT )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13085:1: RULE_INT
+            {
+             before(grammarAccess.getEFloatAccess().getINTTerminalRuleCall_3()); 
+            match(input,RULE_INT,FollowSets001.FOLLOW_RULE_INT_in_rule__EFloat__Group__3__Impl26116); 
+             after(grammarAccess.getEFloatAccess().getINTTerminalRuleCall_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EFloat__Group__3__Impl"
+
+
+    // $ANTLR start "rule__EFloat__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13096:1: rule__EFloat__Group__4 : rule__EFloat__Group__4__Impl ;
+    public final void rule__EFloat__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13100:1: ( rule__EFloat__Group__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13101:2: rule__EFloat__Group__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EFloat__Group__4__Impl_in_rule__EFloat__Group__426145);
+            rule__EFloat__Group__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EFloat__Group__4"
+
+
+    // $ANTLR start "rule__EFloat__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13107:1: rule__EFloat__Group__4__Impl : ( ( rule__EFloat__Group_4__0 )? ) ;
+    public final void rule__EFloat__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13111:1: ( ( ( rule__EFloat__Group_4__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13112:1: ( ( rule__EFloat__Group_4__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13112:1: ( ( rule__EFloat__Group_4__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13113:1: ( rule__EFloat__Group_4__0 )?
+            {
+             before(grammarAccess.getEFloatAccess().getGroup_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13114:1: ( rule__EFloat__Group_4__0 )?
+            int alt62=2;
+            int LA62_0 = input.LA(1);
+
+            if ( ((LA62_0>=13 && LA62_0<=14)) ) {
+                alt62=1;
+            }
+            switch (alt62) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13114:2: rule__EFloat__Group_4__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__EFloat__Group_4__0_in_rule__EFloat__Group__4__Impl26172);
+                    rule__EFloat__Group_4__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEFloatAccess().getGroup_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EFloat__Group__4__Impl"
+
+
+    // $ANTLR start "rule__EFloat__Group_4__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13134:1: rule__EFloat__Group_4__0 : rule__EFloat__Group_4__0__Impl rule__EFloat__Group_4__1 ;
+    public final void rule__EFloat__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13138:1: ( rule__EFloat__Group_4__0__Impl rule__EFloat__Group_4__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13139:2: rule__EFloat__Group_4__0__Impl rule__EFloat__Group_4__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EFloat__Group_4__0__Impl_in_rule__EFloat__Group_4__026213);
+            rule__EFloat__Group_4__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__EFloat__Group_4__1_in_rule__EFloat__Group_4__026216);
+            rule__EFloat__Group_4__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EFloat__Group_4__0"
+
+
+    // $ANTLR start "rule__EFloat__Group_4__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13146:1: rule__EFloat__Group_4__0__Impl : ( ( rule__EFloat__Alternatives_4_0 ) ) ;
+    public final void rule__EFloat__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13150:1: ( ( ( rule__EFloat__Alternatives_4_0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13151:1: ( ( rule__EFloat__Alternatives_4_0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13151:1: ( ( rule__EFloat__Alternatives_4_0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13152:1: ( rule__EFloat__Alternatives_4_0 )
+            {
+             before(grammarAccess.getEFloatAccess().getAlternatives_4_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13153:1: ( rule__EFloat__Alternatives_4_0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13153:2: rule__EFloat__Alternatives_4_0
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EFloat__Alternatives_4_0_in_rule__EFloat__Group_4__0__Impl26243);
+            rule__EFloat__Alternatives_4_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEFloatAccess().getAlternatives_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EFloat__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__EFloat__Group_4__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13163:1: rule__EFloat__Group_4__1 : rule__EFloat__Group_4__1__Impl rule__EFloat__Group_4__2 ;
+    public final void rule__EFloat__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13167:1: ( rule__EFloat__Group_4__1__Impl rule__EFloat__Group_4__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13168:2: rule__EFloat__Group_4__1__Impl rule__EFloat__Group_4__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EFloat__Group_4__1__Impl_in_rule__EFloat__Group_4__126273);
+            rule__EFloat__Group_4__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__EFloat__Group_4__2_in_rule__EFloat__Group_4__126276);
+            rule__EFloat__Group_4__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EFloat__Group_4__1"
+
+
+    // $ANTLR start "rule__EFloat__Group_4__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13175:1: rule__EFloat__Group_4__1__Impl : ( ( '-' )? ) ;
+    public final void rule__EFloat__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13179:1: ( ( ( '-' )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13180:1: ( ( '-' )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13180:1: ( ( '-' )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13181:1: ( '-' )?
+            {
+             before(grammarAccess.getEFloatAccess().getHyphenMinusKeyword_4_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13182:1: ( '-' )?
+            int alt63=2;
+            int LA63_0 = input.LA(1);
+
+            if ( (LA63_0==87) ) {
+                alt63=1;
+            }
+            switch (alt63) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13183:2: '-'
+                    {
+                    match(input,87,FollowSets001.FOLLOW_87_in_rule__EFloat__Group_4__1__Impl26305); 
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEFloatAccess().getHyphenMinusKeyword_4_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EFloat__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__EFloat__Group_4__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13194:1: rule__EFloat__Group_4__2 : rule__EFloat__Group_4__2__Impl ;
+    public final void rule__EFloat__Group_4__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13198:1: ( rule__EFloat__Group_4__2__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13199:2: rule__EFloat__Group_4__2__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EFloat__Group_4__2__Impl_in_rule__EFloat__Group_4__226338);
+            rule__EFloat__Group_4__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EFloat__Group_4__2"
+
+
+    // $ANTLR start "rule__EFloat__Group_4__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13205:1: rule__EFloat__Group_4__2__Impl : ( RULE_INT ) ;
+    public final void rule__EFloat__Group_4__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13209:1: ( ( RULE_INT ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13210:1: ( RULE_INT )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13210:1: ( RULE_INT )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13211:1: RULE_INT
+            {
+             before(grammarAccess.getEFloatAccess().getINTTerminalRuleCall_4_2()); 
+            match(input,RULE_INT,FollowSets001.FOLLOW_RULE_INT_in_rule__EFloat__Group_4__2__Impl26365); 
+             after(grammarAccess.getEFloatAccess().getINTTerminalRuleCall_4_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EFloat__Group_4__2__Impl"
+
+
+    // $ANTLR start "rule__SpeedUnit__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13228:1: rule__SpeedUnit__Group__0 : rule__SpeedUnit__Group__0__Impl rule__SpeedUnit__Group__1 ;
+    public final void rule__SpeedUnit__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13232:1: ( rule__SpeedUnit__Group__0__Impl rule__SpeedUnit__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13233:2: rule__SpeedUnit__Group__0__Impl rule__SpeedUnit__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__Group__0__Impl_in_rule__SpeedUnit__Group__026400);
+            rule__SpeedUnit__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__Group__1_in_rule__SpeedUnit__Group__026403);
+            rule__SpeedUnit__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__Group__0"
+
+
+    // $ANTLR start "rule__SpeedUnit__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13240:1: rule__SpeedUnit__Group__0__Impl : ( 'SpeedUnit' ) ;
+    public final void rule__SpeedUnit__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13244:1: ( ( 'SpeedUnit' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13245:1: ( 'SpeedUnit' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13245:1: ( 'SpeedUnit' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13246:1: 'SpeedUnit'
+            {
+             before(grammarAccess.getSpeedUnitAccess().getSpeedUnitKeyword_0()); 
+            match(input,100,FollowSets001.FOLLOW_100_in_rule__SpeedUnit__Group__0__Impl26431); 
+             after(grammarAccess.getSpeedUnitAccess().getSpeedUnitKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__Group__0__Impl"
+
+
+    // $ANTLR start "rule__SpeedUnit__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13259:1: rule__SpeedUnit__Group__1 : rule__SpeedUnit__Group__1__Impl rule__SpeedUnit__Group__2 ;
+    public final void rule__SpeedUnit__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13263:1: ( rule__SpeedUnit__Group__1__Impl rule__SpeedUnit__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13264:2: rule__SpeedUnit__Group__1__Impl rule__SpeedUnit__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__Group__1__Impl_in_rule__SpeedUnit__Group__126462);
+            rule__SpeedUnit__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__Group__2_in_rule__SpeedUnit__Group__126465);
+            rule__SpeedUnit__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__Group__1"
+
+
+    // $ANTLR start "rule__SpeedUnit__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13271:1: rule__SpeedUnit__Group__1__Impl : ( '{' ) ;
+    public final void rule__SpeedUnit__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13275:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13276:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13276:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13277:1: '{'
+            {
+             before(grammarAccess.getSpeedUnitAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__SpeedUnit__Group__1__Impl26493); 
+             after(grammarAccess.getSpeedUnitAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__Group__1__Impl"
+
+
+    // $ANTLR start "rule__SpeedUnit__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13290:1: rule__SpeedUnit__Group__2 : rule__SpeedUnit__Group__2__Impl rule__SpeedUnit__Group__3 ;
+    public final void rule__SpeedUnit__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13294:1: ( rule__SpeedUnit__Group__2__Impl rule__SpeedUnit__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13295:2: rule__SpeedUnit__Group__2__Impl rule__SpeedUnit__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__Group__2__Impl_in_rule__SpeedUnit__Group__226524);
+            rule__SpeedUnit__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__Group__3_in_rule__SpeedUnit__Group__226527);
+            rule__SpeedUnit__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__Group__2"
+
+
+    // $ANTLR start "rule__SpeedUnit__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13302:1: rule__SpeedUnit__Group__2__Impl : ( 'prefix' ) ;
+    public final void rule__SpeedUnit__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13306:1: ( ( 'prefix' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13307:1: ( 'prefix' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13307:1: ( 'prefix' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13308:1: 'prefix'
+            {
+             before(grammarAccess.getSpeedUnitAccess().getPrefixKeyword_2()); 
+            match(input,101,FollowSets001.FOLLOW_101_in_rule__SpeedUnit__Group__2__Impl26555); 
+             after(grammarAccess.getSpeedUnitAccess().getPrefixKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__Group__2__Impl"
+
+
+    // $ANTLR start "rule__SpeedUnit__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13321:1: rule__SpeedUnit__Group__3 : rule__SpeedUnit__Group__3__Impl rule__SpeedUnit__Group__4 ;
+    public final void rule__SpeedUnit__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13325:1: ( rule__SpeedUnit__Group__3__Impl rule__SpeedUnit__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13326:2: rule__SpeedUnit__Group__3__Impl rule__SpeedUnit__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__Group__3__Impl_in_rule__SpeedUnit__Group__326586);
+            rule__SpeedUnit__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__Group__4_in_rule__SpeedUnit__Group__326589);
+            rule__SpeedUnit__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__Group__3"
+
+
+    // $ANTLR start "rule__SpeedUnit__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13333:1: rule__SpeedUnit__Group__3__Impl : ( ( rule__SpeedUnit__PrefixAssignment_3 ) ) ;
+    public final void rule__SpeedUnit__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13337:1: ( ( ( rule__SpeedUnit__PrefixAssignment_3 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13338:1: ( ( rule__SpeedUnit__PrefixAssignment_3 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13338:1: ( ( rule__SpeedUnit__PrefixAssignment_3 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13339:1: ( rule__SpeedUnit__PrefixAssignment_3 )
+            {
+             before(grammarAccess.getSpeedUnitAccess().getPrefixAssignment_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13340:1: ( rule__SpeedUnit__PrefixAssignment_3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13340:2: rule__SpeedUnit__PrefixAssignment_3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__PrefixAssignment_3_in_rule__SpeedUnit__Group__3__Impl26616);
+            rule__SpeedUnit__PrefixAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSpeedUnitAccess().getPrefixAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__Group__3__Impl"
+
+
+    // $ANTLR start "rule__SpeedUnit__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13350:1: rule__SpeedUnit__Group__4 : rule__SpeedUnit__Group__4__Impl rule__SpeedUnit__Group__5 ;
+    public final void rule__SpeedUnit__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13354:1: ( rule__SpeedUnit__Group__4__Impl rule__SpeedUnit__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13355:2: rule__SpeedUnit__Group__4__Impl rule__SpeedUnit__Group__5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__Group__4__Impl_in_rule__SpeedUnit__Group__426646);
+            rule__SpeedUnit__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__Group__5_in_rule__SpeedUnit__Group__426649);
+            rule__SpeedUnit__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__Group__4"
+
+
+    // $ANTLR start "rule__SpeedUnit__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13362:1: rule__SpeedUnit__Group__4__Impl : ( 'value' ) ;
+    public final void rule__SpeedUnit__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13366:1: ( ( 'value' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13367:1: ( 'value' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13367:1: ( 'value' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13368:1: 'value'
+            {
+             before(grammarAccess.getSpeedUnitAccess().getValueKeyword_4()); 
+            match(input,63,FollowSets001.FOLLOW_63_in_rule__SpeedUnit__Group__4__Impl26677); 
+             after(grammarAccess.getSpeedUnitAccess().getValueKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__Group__4__Impl"
+
+
+    // $ANTLR start "rule__SpeedUnit__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13381:1: rule__SpeedUnit__Group__5 : rule__SpeedUnit__Group__5__Impl rule__SpeedUnit__Group__6 ;
+    public final void rule__SpeedUnit__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13385:1: ( rule__SpeedUnit__Group__5__Impl rule__SpeedUnit__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13386:2: rule__SpeedUnit__Group__5__Impl rule__SpeedUnit__Group__6
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__Group__5__Impl_in_rule__SpeedUnit__Group__526708);
+            rule__SpeedUnit__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__Group__6_in_rule__SpeedUnit__Group__526711);
+            rule__SpeedUnit__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__Group__5"
+
+
+    // $ANTLR start "rule__SpeedUnit__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13393:1: rule__SpeedUnit__Group__5__Impl : ( ( rule__SpeedUnit__ValueAssignment_5 ) ) ;
+    public final void rule__SpeedUnit__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13397:1: ( ( ( rule__SpeedUnit__ValueAssignment_5 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13398:1: ( ( rule__SpeedUnit__ValueAssignment_5 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13398:1: ( ( rule__SpeedUnit__ValueAssignment_5 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13399:1: ( rule__SpeedUnit__ValueAssignment_5 )
+            {
+             before(grammarAccess.getSpeedUnitAccess().getValueAssignment_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13400:1: ( rule__SpeedUnit__ValueAssignment_5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13400:2: rule__SpeedUnit__ValueAssignment_5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__ValueAssignment_5_in_rule__SpeedUnit__Group__5__Impl26738);
+            rule__SpeedUnit__ValueAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSpeedUnitAccess().getValueAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__Group__5__Impl"
+
+
+    // $ANTLR start "rule__SpeedUnit__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13410:1: rule__SpeedUnit__Group__6 : rule__SpeedUnit__Group__6__Impl rule__SpeedUnit__Group__7 ;
+    public final void rule__SpeedUnit__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13414:1: ( rule__SpeedUnit__Group__6__Impl rule__SpeedUnit__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13415:2: rule__SpeedUnit__Group__6__Impl rule__SpeedUnit__Group__7
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__Group__6__Impl_in_rule__SpeedUnit__Group__626768);
+            rule__SpeedUnit__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__Group__7_in_rule__SpeedUnit__Group__626771);
+            rule__SpeedUnit__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__Group__6"
+
+
+    // $ANTLR start "rule__SpeedUnit__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13422:1: rule__SpeedUnit__Group__6__Impl : ( 'unit' ) ;
+    public final void rule__SpeedUnit__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13426:1: ( ( 'unit' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13427:1: ( 'unit' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13427:1: ( 'unit' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13428:1: 'unit'
+            {
+             before(grammarAccess.getSpeedUnitAccess().getUnitKeyword_6()); 
+            match(input,89,FollowSets001.FOLLOW_89_in_rule__SpeedUnit__Group__6__Impl26799); 
+             after(grammarAccess.getSpeedUnitAccess().getUnitKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__Group__6__Impl"
+
+
+    // $ANTLR start "rule__SpeedUnit__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13441:1: rule__SpeedUnit__Group__7 : rule__SpeedUnit__Group__7__Impl rule__SpeedUnit__Group__8 ;
+    public final void rule__SpeedUnit__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13445:1: ( rule__SpeedUnit__Group__7__Impl rule__SpeedUnit__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13446:2: rule__SpeedUnit__Group__7__Impl rule__SpeedUnit__Group__8
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__Group__7__Impl_in_rule__SpeedUnit__Group__726830);
+            rule__SpeedUnit__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__Group__8_in_rule__SpeedUnit__Group__726833);
+            rule__SpeedUnit__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__Group__7"
+
+
+    // $ANTLR start "rule__SpeedUnit__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13453:1: rule__SpeedUnit__Group__7__Impl : ( ( rule__SpeedUnit__UnitAssignment_7 ) ) ;
+    public final void rule__SpeedUnit__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13457:1: ( ( ( rule__SpeedUnit__UnitAssignment_7 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13458:1: ( ( rule__SpeedUnit__UnitAssignment_7 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13458:1: ( ( rule__SpeedUnit__UnitAssignment_7 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13459:1: ( rule__SpeedUnit__UnitAssignment_7 )
+            {
+             before(grammarAccess.getSpeedUnitAccess().getUnitAssignment_7()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13460:1: ( rule__SpeedUnit__UnitAssignment_7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13460:2: rule__SpeedUnit__UnitAssignment_7
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__UnitAssignment_7_in_rule__SpeedUnit__Group__7__Impl26860);
+            rule__SpeedUnit__UnitAssignment_7();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSpeedUnitAccess().getUnitAssignment_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__Group__7__Impl"
+
+
+    // $ANTLR start "rule__SpeedUnit__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13470:1: rule__SpeedUnit__Group__8 : rule__SpeedUnit__Group__8__Impl ;
+    public final void rule__SpeedUnit__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13474:1: ( rule__SpeedUnit__Group__8__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13475:2: rule__SpeedUnit__Group__8__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SpeedUnit__Group__8__Impl_in_rule__SpeedUnit__Group__826890);
+            rule__SpeedUnit__Group__8__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__Group__8"
+
+
+    // $ANTLR start "rule__SpeedUnit__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13481:1: rule__SpeedUnit__Group__8__Impl : ( '}' ) ;
+    public final void rule__SpeedUnit__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13485:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13486:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13486:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13487:1: '}'
+            {
+             before(grammarAccess.getSpeedUnitAccess().getRightCurlyBracketKeyword_8()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__SpeedUnit__Group__8__Impl26918); 
+             after(grammarAccess.getSpeedUnitAccess().getRightCurlyBracketKeyword_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__Group__8__Impl"
+
+
+    // $ANTLR start "rule__EDouble__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13518:1: rule__EDouble__Group__0 : rule__EDouble__Group__0__Impl rule__EDouble__Group__1 ;
+    public final void rule__EDouble__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13522:1: ( rule__EDouble__Group__0__Impl rule__EDouble__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13523:2: rule__EDouble__Group__0__Impl rule__EDouble__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EDouble__Group__0__Impl_in_rule__EDouble__Group__026967);
+            rule__EDouble__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__EDouble__Group__1_in_rule__EDouble__Group__026970);
+            rule__EDouble__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EDouble__Group__0"
+
+
+    // $ANTLR start "rule__EDouble__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13530:1: rule__EDouble__Group__0__Impl : ( ( '-' )? ) ;
+    public final void rule__EDouble__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13534:1: ( ( ( '-' )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13535:1: ( ( '-' )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13535:1: ( ( '-' )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13536:1: ( '-' )?
+            {
+             before(grammarAccess.getEDoubleAccess().getHyphenMinusKeyword_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13537:1: ( '-' )?
+            int alt64=2;
+            int LA64_0 = input.LA(1);
+
+            if ( (LA64_0==87) ) {
+                alt64=1;
+            }
+            switch (alt64) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13538:2: '-'
+                    {
+                    match(input,87,FollowSets001.FOLLOW_87_in_rule__EDouble__Group__0__Impl26999); 
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEDoubleAccess().getHyphenMinusKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EDouble__Group__0__Impl"
+
+
+    // $ANTLR start "rule__EDouble__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13549:1: rule__EDouble__Group__1 : rule__EDouble__Group__1__Impl rule__EDouble__Group__2 ;
+    public final void rule__EDouble__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13553:1: ( rule__EDouble__Group__1__Impl rule__EDouble__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13554:2: rule__EDouble__Group__1__Impl rule__EDouble__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EDouble__Group__1__Impl_in_rule__EDouble__Group__127032);
+            rule__EDouble__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__EDouble__Group__2_in_rule__EDouble__Group__127035);
+            rule__EDouble__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EDouble__Group__1"
+
+
+    // $ANTLR start "rule__EDouble__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13561:1: rule__EDouble__Group__1__Impl : ( ( RULE_INT )? ) ;
+    public final void rule__EDouble__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13565:1: ( ( ( RULE_INT )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13566:1: ( ( RULE_INT )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13566:1: ( ( RULE_INT )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13567:1: ( RULE_INT )?
+            {
+             before(grammarAccess.getEDoubleAccess().getINTTerminalRuleCall_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13568:1: ( RULE_INT )?
+            int alt65=2;
+            int LA65_0 = input.LA(1);
+
+            if ( (LA65_0==RULE_INT) ) {
+                alt65=1;
+            }
+            switch (alt65) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13568:3: RULE_INT
+                    {
+                    match(input,RULE_INT,FollowSets001.FOLLOW_RULE_INT_in_rule__EDouble__Group__1__Impl27063); 
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEDoubleAccess().getINTTerminalRuleCall_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EDouble__Group__1__Impl"
+
+
+    // $ANTLR start "rule__EDouble__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13578:1: rule__EDouble__Group__2 : rule__EDouble__Group__2__Impl rule__EDouble__Group__3 ;
+    public final void rule__EDouble__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13582:1: ( rule__EDouble__Group__2__Impl rule__EDouble__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13583:2: rule__EDouble__Group__2__Impl rule__EDouble__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EDouble__Group__2__Impl_in_rule__EDouble__Group__227094);
+            rule__EDouble__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__EDouble__Group__3_in_rule__EDouble__Group__227097);
+            rule__EDouble__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EDouble__Group__2"
+
+
+    // $ANTLR start "rule__EDouble__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13590:1: rule__EDouble__Group__2__Impl : ( '.' ) ;
+    public final void rule__EDouble__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13594:1: ( ( '.' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13595:1: ( '.' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13595:1: ( '.' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13596:1: '.'
+            {
+             before(grammarAccess.getEDoubleAccess().getFullStopKeyword_2()); 
+            match(input,99,FollowSets001.FOLLOW_99_in_rule__EDouble__Group__2__Impl27125); 
+             after(grammarAccess.getEDoubleAccess().getFullStopKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EDouble__Group__2__Impl"
+
+
+    // $ANTLR start "rule__EDouble__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13609:1: rule__EDouble__Group__3 : rule__EDouble__Group__3__Impl rule__EDouble__Group__4 ;
+    public final void rule__EDouble__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13613:1: ( rule__EDouble__Group__3__Impl rule__EDouble__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13614:2: rule__EDouble__Group__3__Impl rule__EDouble__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EDouble__Group__3__Impl_in_rule__EDouble__Group__327156);
+            rule__EDouble__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__EDouble__Group__4_in_rule__EDouble__Group__327159);
+            rule__EDouble__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EDouble__Group__3"
+
+
+    // $ANTLR start "rule__EDouble__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13621:1: rule__EDouble__Group__3__Impl : ( RULE_INT ) ;
+    public final void rule__EDouble__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13625:1: ( ( RULE_INT ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13626:1: ( RULE_INT )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13626:1: ( RULE_INT )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13627:1: RULE_INT
+            {
+             before(grammarAccess.getEDoubleAccess().getINTTerminalRuleCall_3()); 
+            match(input,RULE_INT,FollowSets001.FOLLOW_RULE_INT_in_rule__EDouble__Group__3__Impl27186); 
+             after(grammarAccess.getEDoubleAccess().getINTTerminalRuleCall_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EDouble__Group__3__Impl"
+
+
+    // $ANTLR start "rule__EDouble__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13638:1: rule__EDouble__Group__4 : rule__EDouble__Group__4__Impl ;
+    public final void rule__EDouble__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13642:1: ( rule__EDouble__Group__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13643:2: rule__EDouble__Group__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EDouble__Group__4__Impl_in_rule__EDouble__Group__427215);
+            rule__EDouble__Group__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EDouble__Group__4"
+
+
+    // $ANTLR start "rule__EDouble__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13649:1: rule__EDouble__Group__4__Impl : ( ( rule__EDouble__Group_4__0 )? ) ;
+    public final void rule__EDouble__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13653:1: ( ( ( rule__EDouble__Group_4__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13654:1: ( ( rule__EDouble__Group_4__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13654:1: ( ( rule__EDouble__Group_4__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13655:1: ( rule__EDouble__Group_4__0 )?
+            {
+             before(grammarAccess.getEDoubleAccess().getGroup_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13656:1: ( rule__EDouble__Group_4__0 )?
+            int alt66=2;
+            int LA66_0 = input.LA(1);
+
+            if ( ((LA66_0>=13 && LA66_0<=14)) ) {
+                alt66=1;
+            }
+            switch (alt66) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13656:2: rule__EDouble__Group_4__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__EDouble__Group_4__0_in_rule__EDouble__Group__4__Impl27242);
+                    rule__EDouble__Group_4__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEDoubleAccess().getGroup_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EDouble__Group__4__Impl"
+
+
+    // $ANTLR start "rule__EDouble__Group_4__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13676:1: rule__EDouble__Group_4__0 : rule__EDouble__Group_4__0__Impl rule__EDouble__Group_4__1 ;
+    public final void rule__EDouble__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13680:1: ( rule__EDouble__Group_4__0__Impl rule__EDouble__Group_4__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13681:2: rule__EDouble__Group_4__0__Impl rule__EDouble__Group_4__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EDouble__Group_4__0__Impl_in_rule__EDouble__Group_4__027283);
+            rule__EDouble__Group_4__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__EDouble__Group_4__1_in_rule__EDouble__Group_4__027286);
+            rule__EDouble__Group_4__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EDouble__Group_4__0"
+
+
+    // $ANTLR start "rule__EDouble__Group_4__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13688:1: rule__EDouble__Group_4__0__Impl : ( ( rule__EDouble__Alternatives_4_0 ) ) ;
+    public final void rule__EDouble__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13692:1: ( ( ( rule__EDouble__Alternatives_4_0 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13693:1: ( ( rule__EDouble__Alternatives_4_0 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13693:1: ( ( rule__EDouble__Alternatives_4_0 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13694:1: ( rule__EDouble__Alternatives_4_0 )
+            {
+             before(grammarAccess.getEDoubleAccess().getAlternatives_4_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13695:1: ( rule__EDouble__Alternatives_4_0 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13695:2: rule__EDouble__Alternatives_4_0
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EDouble__Alternatives_4_0_in_rule__EDouble__Group_4__0__Impl27313);
+            rule__EDouble__Alternatives_4_0();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getEDoubleAccess().getAlternatives_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EDouble__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__EDouble__Group_4__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13705:1: rule__EDouble__Group_4__1 : rule__EDouble__Group_4__1__Impl rule__EDouble__Group_4__2 ;
+    public final void rule__EDouble__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13709:1: ( rule__EDouble__Group_4__1__Impl rule__EDouble__Group_4__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13710:2: rule__EDouble__Group_4__1__Impl rule__EDouble__Group_4__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EDouble__Group_4__1__Impl_in_rule__EDouble__Group_4__127343);
+            rule__EDouble__Group_4__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__EDouble__Group_4__2_in_rule__EDouble__Group_4__127346);
+            rule__EDouble__Group_4__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EDouble__Group_4__1"
+
+
+    // $ANTLR start "rule__EDouble__Group_4__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13717:1: rule__EDouble__Group_4__1__Impl : ( ( '-' )? ) ;
+    public final void rule__EDouble__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13721:1: ( ( ( '-' )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13722:1: ( ( '-' )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13722:1: ( ( '-' )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13723:1: ( '-' )?
+            {
+             before(grammarAccess.getEDoubleAccess().getHyphenMinusKeyword_4_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13724:1: ( '-' )?
+            int alt67=2;
+            int LA67_0 = input.LA(1);
+
+            if ( (LA67_0==87) ) {
+                alt67=1;
+            }
+            switch (alt67) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13725:2: '-'
+                    {
+                    match(input,87,FollowSets001.FOLLOW_87_in_rule__EDouble__Group_4__1__Impl27375); 
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEDoubleAccess().getHyphenMinusKeyword_4_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EDouble__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__EDouble__Group_4__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13736:1: rule__EDouble__Group_4__2 : rule__EDouble__Group_4__2__Impl ;
+    public final void rule__EDouble__Group_4__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13740:1: ( rule__EDouble__Group_4__2__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13741:2: rule__EDouble__Group_4__2__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__EDouble__Group_4__2__Impl_in_rule__EDouble__Group_4__227408);
+            rule__EDouble__Group_4__2__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EDouble__Group_4__2"
+
+
+    // $ANTLR start "rule__EDouble__Group_4__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13747:1: rule__EDouble__Group_4__2__Impl : ( RULE_INT ) ;
+    public final void rule__EDouble__Group_4__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13751:1: ( ( RULE_INT ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13752:1: ( RULE_INT )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13752:1: ( RULE_INT )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13753:1: RULE_INT
+            {
+             before(grammarAccess.getEDoubleAccess().getINTTerminalRuleCall_4_2()); 
+            match(input,RULE_INT,FollowSets001.FOLLOW_RULE_INT_in_rule__EDouble__Group_4__2__Impl27435); 
+             after(grammarAccess.getEDoubleAccess().getINTTerminalRuleCall_4_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EDouble__Group_4__2__Impl"
+
+
+    // $ANTLR start "rule__ELong__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13770:1: rule__ELong__Group__0 : rule__ELong__Group__0__Impl rule__ELong__Group__1 ;
+    public final void rule__ELong__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13774:1: ( rule__ELong__Group__0__Impl rule__ELong__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13775:2: rule__ELong__Group__0__Impl rule__ELong__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ELong__Group__0__Impl_in_rule__ELong__Group__027470);
+            rule__ELong__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ELong__Group__1_in_rule__ELong__Group__027473);
+            rule__ELong__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ELong__Group__0"
+
+
+    // $ANTLR start "rule__ELong__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13782:1: rule__ELong__Group__0__Impl : ( ( '-' )? ) ;
+    public final void rule__ELong__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13786:1: ( ( ( '-' )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13787:1: ( ( '-' )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13787:1: ( ( '-' )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13788:1: ( '-' )?
+            {
+             before(grammarAccess.getELongAccess().getHyphenMinusKeyword_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13789:1: ( '-' )?
+            int alt68=2;
+            int LA68_0 = input.LA(1);
+
+            if ( (LA68_0==87) ) {
+                alt68=1;
+            }
+            switch (alt68) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13790:2: '-'
+                    {
+                    match(input,87,FollowSets001.FOLLOW_87_in_rule__ELong__Group__0__Impl27502); 
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getELongAccess().getHyphenMinusKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ELong__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ELong__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13801:1: rule__ELong__Group__1 : rule__ELong__Group__1__Impl ;
+    public final void rule__ELong__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13805:1: ( rule__ELong__Group__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13806:2: rule__ELong__Group__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ELong__Group__1__Impl_in_rule__ELong__Group__127535);
+            rule__ELong__Group__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ELong__Group__1"
+
+
+    // $ANTLR start "rule__ELong__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13812:1: rule__ELong__Group__1__Impl : ( RULE_INT ) ;
+    public final void rule__ELong__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13816:1: ( ( RULE_INT ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13817:1: ( RULE_INT )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13817:1: ( RULE_INT )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13818:1: RULE_INT
+            {
+             before(grammarAccess.getELongAccess().getINTTerminalRuleCall_1()); 
+            match(input,RULE_INT,FollowSets001.FOLLOW_RULE_INT_in_rule__ELong__Group__1__Impl27562); 
+             after(grammarAccess.getELongAccess().getINTTerminalRuleCall_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ELong__Group__1__Impl"
+
+
+    // $ANTLR start "rule__DataSeries__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13833:1: rule__DataSeries__Group__0 : rule__DataSeries__Group__0__Impl rule__DataSeries__Group__1 ;
+    public final void rule__DataSeries__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13837:1: ( rule__DataSeries__Group__0__Impl rule__DataSeries__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13838:2: rule__DataSeries__Group__0__Impl rule__DataSeries__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group__0__Impl_in_rule__DataSeries__Group__027595);
+            rule__DataSeries__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group__1_in_rule__DataSeries__Group__027598);
+            rule__DataSeries__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group__0"
+
+
+    // $ANTLR start "rule__DataSeries__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13845:1: rule__DataSeries__Group__0__Impl : ( () ) ;
+    public final void rule__DataSeries__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13849:1: ( ( () ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13850:1: ( () )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13850:1: ( () )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13851:1: ()
+            {
+             before(grammarAccess.getDataSeriesAccess().getDataSeriesAction_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13852:1: ()
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13854:1: 
+            {
+            }
+
+             after(grammarAccess.getDataSeriesAccess().getDataSeriesAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group__0__Impl"
+
+
+    // $ANTLR start "rule__DataSeries__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13864:1: rule__DataSeries__Group__1 : rule__DataSeries__Group__1__Impl rule__DataSeries__Group__2 ;
+    public final void rule__DataSeries__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13868:1: ( rule__DataSeries__Group__1__Impl rule__DataSeries__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13869:2: rule__DataSeries__Group__1__Impl rule__DataSeries__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group__1__Impl_in_rule__DataSeries__Group__127656);
+            rule__DataSeries__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group__2_in_rule__DataSeries__Group__127659);
+            rule__DataSeries__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group__1"
+
+
+    // $ANTLR start "rule__DataSeries__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13876:1: rule__DataSeries__Group__1__Impl : ( 'DataSeries' ) ;
+    public final void rule__DataSeries__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13880:1: ( ( 'DataSeries' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13881:1: ( 'DataSeries' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13881:1: ( 'DataSeries' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13882:1: 'DataSeries'
+            {
+             before(grammarAccess.getDataSeriesAccess().getDataSeriesKeyword_1()); 
+            match(input,102,FollowSets001.FOLLOW_102_in_rule__DataSeries__Group__1__Impl27687); 
+             after(grammarAccess.getDataSeriesAccess().getDataSeriesKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group__1__Impl"
+
+
+    // $ANTLR start "rule__DataSeries__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13895:1: rule__DataSeries__Group__2 : rule__DataSeries__Group__2__Impl rule__DataSeries__Group__3 ;
+    public final void rule__DataSeries__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13899:1: ( rule__DataSeries__Group__2__Impl rule__DataSeries__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13900:2: rule__DataSeries__Group__2__Impl rule__DataSeries__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group__2__Impl_in_rule__DataSeries__Group__227718);
+            rule__DataSeries__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group__3_in_rule__DataSeries__Group__227721);
+            rule__DataSeries__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group__2"
+
+
+    // $ANTLR start "rule__DataSeries__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13907:1: rule__DataSeries__Group__2__Impl : ( '{' ) ;
+    public final void rule__DataSeries__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13911:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13912:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13912:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13913:1: '{'
+            {
+             before(grammarAccess.getDataSeriesAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__DataSeries__Group__2__Impl27749); 
+             after(grammarAccess.getDataSeriesAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group__2__Impl"
+
+
+    // $ANTLR start "rule__DataSeries__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13926:1: rule__DataSeries__Group__3 : rule__DataSeries__Group__3__Impl rule__DataSeries__Group__4 ;
+    public final void rule__DataSeries__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13930:1: ( rule__DataSeries__Group__3__Impl rule__DataSeries__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13931:2: rule__DataSeries__Group__3__Impl rule__DataSeries__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group__3__Impl_in_rule__DataSeries__Group__327780);
+            rule__DataSeries__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group__4_in_rule__DataSeries__Group__327783);
+            rule__DataSeries__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group__3"
+
+
+    // $ANTLR start "rule__DataSeries__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13938:1: rule__DataSeries__Group__3__Impl : ( ( rule__DataSeries__Group_3__0 )? ) ;
+    public final void rule__DataSeries__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13942:1: ( ( ( rule__DataSeries__Group_3__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13943:1: ( ( rule__DataSeries__Group_3__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13943:1: ( ( rule__DataSeries__Group_3__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13944:1: ( rule__DataSeries__Group_3__0 )?
+            {
+             before(grammarAccess.getDataSeriesAccess().getGroup_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13945:1: ( rule__DataSeries__Group_3__0 )?
+            int alt69=2;
+            int LA69_0 = input.LA(1);
+
+            if ( (LA69_0==103) ) {
+                alt69=1;
+            }
+            switch (alt69) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13945:2: rule__DataSeries__Group_3__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group_3__0_in_rule__DataSeries__Group__3__Impl27810);
+                    rule__DataSeries__Group_3__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getDataSeriesAccess().getGroup_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group__3__Impl"
+
+
+    // $ANTLR start "rule__DataSeries__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13955:1: rule__DataSeries__Group__4 : rule__DataSeries__Group__4__Impl ;
+    public final void rule__DataSeries__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13959:1: ( rule__DataSeries__Group__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13960:2: rule__DataSeries__Group__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group__4__Impl_in_rule__DataSeries__Group__427841);
+            rule__DataSeries__Group__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group__4"
+
+
+    // $ANTLR start "rule__DataSeries__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13966:1: rule__DataSeries__Group__4__Impl : ( '}' ) ;
+    public final void rule__DataSeries__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13970:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13971:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13971:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13972:1: '}'
+            {
+             before(grammarAccess.getDataSeriesAccess().getRightCurlyBracketKeyword_4()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__DataSeries__Group__4__Impl27869); 
+             after(grammarAccess.getDataSeriesAccess().getRightCurlyBracketKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group__4__Impl"
+
+
+    // $ANTLR start "rule__DataSeries__Group_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13995:1: rule__DataSeries__Group_3__0 : rule__DataSeries__Group_3__0__Impl rule__DataSeries__Group_3__1 ;
+    public final void rule__DataSeries__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:13999:1: ( rule__DataSeries__Group_3__0__Impl rule__DataSeries__Group_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14000:2: rule__DataSeries__Group_3__0__Impl rule__DataSeries__Group_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group_3__0__Impl_in_rule__DataSeries__Group_3__027910);
+            rule__DataSeries__Group_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group_3__1_in_rule__DataSeries__Group_3__027913);
+            rule__DataSeries__Group_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group_3__0"
+
+
+    // $ANTLR start "rule__DataSeries__Group_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14007:1: rule__DataSeries__Group_3__0__Impl : ( 'data' ) ;
+    public final void rule__DataSeries__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14011:1: ( ( 'data' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14012:1: ( 'data' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14012:1: ( 'data' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14013:1: 'data'
+            {
+             before(grammarAccess.getDataSeriesAccess().getDataKeyword_3_0()); 
+            match(input,103,FollowSets001.FOLLOW_103_in_rule__DataSeries__Group_3__0__Impl27941); 
+             after(grammarAccess.getDataSeriesAccess().getDataKeyword_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__DataSeries__Group_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14026:1: rule__DataSeries__Group_3__1 : rule__DataSeries__Group_3__1__Impl rule__DataSeries__Group_3__2 ;
+    public final void rule__DataSeries__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14030:1: ( rule__DataSeries__Group_3__1__Impl rule__DataSeries__Group_3__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14031:2: rule__DataSeries__Group_3__1__Impl rule__DataSeries__Group_3__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group_3__1__Impl_in_rule__DataSeries__Group_3__127972);
+            rule__DataSeries__Group_3__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group_3__2_in_rule__DataSeries__Group_3__127975);
+            rule__DataSeries__Group_3__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group_3__1"
+
+
+    // $ANTLR start "rule__DataSeries__Group_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14038:1: rule__DataSeries__Group_3__1__Impl : ( '{' ) ;
+    public final void rule__DataSeries__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14042:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14043:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14043:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14044:1: '{'
+            {
+             before(grammarAccess.getDataSeriesAccess().getLeftCurlyBracketKeyword_3_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__DataSeries__Group_3__1__Impl28003); 
+             after(grammarAccess.getDataSeriesAccess().getLeftCurlyBracketKeyword_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__DataSeries__Group_3__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14057:1: rule__DataSeries__Group_3__2 : rule__DataSeries__Group_3__2__Impl rule__DataSeries__Group_3__3 ;
+    public final void rule__DataSeries__Group_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14061:1: ( rule__DataSeries__Group_3__2__Impl rule__DataSeries__Group_3__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14062:2: rule__DataSeries__Group_3__2__Impl rule__DataSeries__Group_3__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group_3__2__Impl_in_rule__DataSeries__Group_3__228034);
+            rule__DataSeries__Group_3__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group_3__3_in_rule__DataSeries__Group_3__228037);
+            rule__DataSeries__Group_3__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group_3__2"
+
+
+    // $ANTLR start "rule__DataSeries__Group_3__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14069:1: rule__DataSeries__Group_3__2__Impl : ( ( rule__DataSeries__DataAssignment_3_2 ) ) ;
+    public final void rule__DataSeries__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14073:1: ( ( ( rule__DataSeries__DataAssignment_3_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14074:1: ( ( rule__DataSeries__DataAssignment_3_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14074:1: ( ( rule__DataSeries__DataAssignment_3_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14075:1: ( rule__DataSeries__DataAssignment_3_2 )
+            {
+             before(grammarAccess.getDataSeriesAccess().getDataAssignment_3_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14076:1: ( rule__DataSeries__DataAssignment_3_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14076:2: rule__DataSeries__DataAssignment_3_2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__DataAssignment_3_2_in_rule__DataSeries__Group_3__2__Impl28064);
+            rule__DataSeries__DataAssignment_3_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDataSeriesAccess().getDataAssignment_3_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group_3__2__Impl"
+
+
+    // $ANTLR start "rule__DataSeries__Group_3__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14086:1: rule__DataSeries__Group_3__3 : rule__DataSeries__Group_3__3__Impl rule__DataSeries__Group_3__4 ;
+    public final void rule__DataSeries__Group_3__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14090:1: ( rule__DataSeries__Group_3__3__Impl rule__DataSeries__Group_3__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14091:2: rule__DataSeries__Group_3__3__Impl rule__DataSeries__Group_3__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group_3__3__Impl_in_rule__DataSeries__Group_3__328094);
+            rule__DataSeries__Group_3__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group_3__4_in_rule__DataSeries__Group_3__328097);
+            rule__DataSeries__Group_3__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group_3__3"
+
+
+    // $ANTLR start "rule__DataSeries__Group_3__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14098:1: rule__DataSeries__Group_3__3__Impl : ( ( rule__DataSeries__Group_3_3__0 )* ) ;
+    public final void rule__DataSeries__Group_3__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14102:1: ( ( ( rule__DataSeries__Group_3_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14103:1: ( ( rule__DataSeries__Group_3_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14103:1: ( ( rule__DataSeries__Group_3_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14104:1: ( rule__DataSeries__Group_3_3__0 )*
+            {
+             before(grammarAccess.getDataSeriesAccess().getGroup_3_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14105:1: ( rule__DataSeries__Group_3_3__0 )*
+            loop70:
+            do {
+                int alt70=2;
+                int LA70_0 = input.LA(1);
+
+                if ( (LA70_0==31) ) {
+                    alt70=1;
+                }
+
+
+                switch (alt70) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14105:2: rule__DataSeries__Group_3_3__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group_3_3__0_in_rule__DataSeries__Group_3__3__Impl28124);
+            	    rule__DataSeries__Group_3_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop70;
+                }
+            } while (true);
+
+             after(grammarAccess.getDataSeriesAccess().getGroup_3_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group_3__3__Impl"
+
+
+    // $ANTLR start "rule__DataSeries__Group_3__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14115:1: rule__DataSeries__Group_3__4 : rule__DataSeries__Group_3__4__Impl ;
+    public final void rule__DataSeries__Group_3__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14119:1: ( rule__DataSeries__Group_3__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14120:2: rule__DataSeries__Group_3__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group_3__4__Impl_in_rule__DataSeries__Group_3__428155);
+            rule__DataSeries__Group_3__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group_3__4"
+
+
+    // $ANTLR start "rule__DataSeries__Group_3__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14126:1: rule__DataSeries__Group_3__4__Impl : ( '}' ) ;
+    public final void rule__DataSeries__Group_3__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14130:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14131:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14131:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14132:1: '}'
+            {
+             before(grammarAccess.getDataSeriesAccess().getRightCurlyBracketKeyword_3_4()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__DataSeries__Group_3__4__Impl28183); 
+             after(grammarAccess.getDataSeriesAccess().getRightCurlyBracketKeyword_3_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group_3__4__Impl"
+
+
+    // $ANTLR start "rule__DataSeries__Group_3_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14155:1: rule__DataSeries__Group_3_3__0 : rule__DataSeries__Group_3_3__0__Impl rule__DataSeries__Group_3_3__1 ;
+    public final void rule__DataSeries__Group_3_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14159:1: ( rule__DataSeries__Group_3_3__0__Impl rule__DataSeries__Group_3_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14160:2: rule__DataSeries__Group_3_3__0__Impl rule__DataSeries__Group_3_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group_3_3__0__Impl_in_rule__DataSeries__Group_3_3__028224);
+            rule__DataSeries__Group_3_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group_3_3__1_in_rule__DataSeries__Group_3_3__028227);
+            rule__DataSeries__Group_3_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group_3_3__0"
+
+
+    // $ANTLR start "rule__DataSeries__Group_3_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14167:1: rule__DataSeries__Group_3_3__0__Impl : ( ',' ) ;
+    public final void rule__DataSeries__Group_3_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14171:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14172:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14172:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14173:1: ','
+            {
+             before(grammarAccess.getDataSeriesAccess().getCommaKeyword_3_3_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__DataSeries__Group_3_3__0__Impl28255); 
+             after(grammarAccess.getDataSeriesAccess().getCommaKeyword_3_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group_3_3__0__Impl"
+
+
+    // $ANTLR start "rule__DataSeries__Group_3_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14186:1: rule__DataSeries__Group_3_3__1 : rule__DataSeries__Group_3_3__1__Impl ;
+    public final void rule__DataSeries__Group_3_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14190:1: ( rule__DataSeries__Group_3_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14191:2: rule__DataSeries__Group_3_3__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__Group_3_3__1__Impl_in_rule__DataSeries__Group_3_3__128286);
+            rule__DataSeries__Group_3_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group_3_3__1"
+
+
+    // $ANTLR start "rule__DataSeries__Group_3_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14197:1: rule__DataSeries__Group_3_3__1__Impl : ( ( rule__DataSeries__DataAssignment_3_3_1 ) ) ;
+    public final void rule__DataSeries__Group_3_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14201:1: ( ( ( rule__DataSeries__DataAssignment_3_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14202:1: ( ( rule__DataSeries__DataAssignment_3_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14202:1: ( ( rule__DataSeries__DataAssignment_3_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14203:1: ( rule__DataSeries__DataAssignment_3_3_1 )
+            {
+             before(grammarAccess.getDataSeriesAccess().getDataAssignment_3_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14204:1: ( rule__DataSeries__DataAssignment_3_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14204:2: rule__DataSeries__DataAssignment_3_3_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__DataSeries__DataAssignment_3_3_1_in_rule__DataSeries__Group_3_3__1__Impl28313);
+            rule__DataSeries__DataAssignment_3_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDataSeriesAccess().getDataAssignment_3_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__Group_3_3__1__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14218:1: rule__TrafficSource__Group__0 : rule__TrafficSource__Group__0__Impl rule__TrafficSource__Group__1 ;
+    public final void rule__TrafficSource__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14222:1: ( rule__TrafficSource__Group__0__Impl rule__TrafficSource__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14223:2: rule__TrafficSource__Group__0__Impl rule__TrafficSource__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__0__Impl_in_rule__TrafficSource__Group__028347);
+            rule__TrafficSource__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__1_in_rule__TrafficSource__Group__028350);
+            rule__TrafficSource__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__0"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14230:1: rule__TrafficSource__Group__0__Impl : ( 'TrafficSource' ) ;
+    public final void rule__TrafficSource__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14234:1: ( ( 'TrafficSource' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14235:1: ( 'TrafficSource' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14235:1: ( 'TrafficSource' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14236:1: 'TrafficSource'
+            {
+             before(grammarAccess.getTrafficSourceAccess().getTrafficSourceKeyword_0()); 
+            match(input,104,FollowSets001.FOLLOW_104_in_rule__TrafficSource__Group__0__Impl28378); 
+             after(grammarAccess.getTrafficSourceAccess().getTrafficSourceKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__0__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14249:1: rule__TrafficSource__Group__1 : rule__TrafficSource__Group__1__Impl rule__TrafficSource__Group__2 ;
+    public final void rule__TrafficSource__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14253:1: ( rule__TrafficSource__Group__1__Impl rule__TrafficSource__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14254:2: rule__TrafficSource__Group__1__Impl rule__TrafficSource__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__1__Impl_in_rule__TrafficSource__Group__128409);
+            rule__TrafficSource__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__2_in_rule__TrafficSource__Group__128412);
+            rule__TrafficSource__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__1"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14261:1: rule__TrafficSource__Group__1__Impl : ( ( rule__TrafficSource__IdAssignment_1 ) ) ;
+    public final void rule__TrafficSource__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14265:1: ( ( ( rule__TrafficSource__IdAssignment_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14266:1: ( ( rule__TrafficSource__IdAssignment_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14266:1: ( ( rule__TrafficSource__IdAssignment_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14267:1: ( rule__TrafficSource__IdAssignment_1 )
+            {
+             before(grammarAccess.getTrafficSourceAccess().getIdAssignment_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14268:1: ( rule__TrafficSource__IdAssignment_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14268:2: rule__TrafficSource__IdAssignment_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__IdAssignment_1_in_rule__TrafficSource__Group__1__Impl28439);
+            rule__TrafficSource__IdAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTrafficSourceAccess().getIdAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__1__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14278:1: rule__TrafficSource__Group__2 : rule__TrafficSource__Group__2__Impl rule__TrafficSource__Group__3 ;
+    public final void rule__TrafficSource__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14282:1: ( rule__TrafficSource__Group__2__Impl rule__TrafficSource__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14283:2: rule__TrafficSource__Group__2__Impl rule__TrafficSource__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__2__Impl_in_rule__TrafficSource__Group__228469);
+            rule__TrafficSource__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__3_in_rule__TrafficSource__Group__228472);
+            rule__TrafficSource__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__2"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14290:1: rule__TrafficSource__Group__2__Impl : ( '{' ) ;
+    public final void rule__TrafficSource__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14294:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14295:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14295:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14296:1: '{'
+            {
+             before(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__TrafficSource__Group__2__Impl28500); 
+             after(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__2__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14309:1: rule__TrafficSource__Group__3 : rule__TrafficSource__Group__3__Impl rule__TrafficSource__Group__4 ;
+    public final void rule__TrafficSource__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14313:1: ( rule__TrafficSource__Group__3__Impl rule__TrafficSource__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14314:2: rule__TrafficSource__Group__3__Impl rule__TrafficSource__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__3__Impl_in_rule__TrafficSource__Group__328531);
+            rule__TrafficSource__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__4_in_rule__TrafficSource__Group__328534);
+            rule__TrafficSource__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__3"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14321:1: rule__TrafficSource__Group__3__Impl : ( 'name' ) ;
+    public final void rule__TrafficSource__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14325:1: ( ( 'name' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14326:1: ( 'name' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14326:1: ( 'name' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14327:1: 'name'
+            {
+             before(grammarAccess.getTrafficSourceAccess().getNameKeyword_3()); 
+            match(input,65,FollowSets001.FOLLOW_65_in_rule__TrafficSource__Group__3__Impl28562); 
+             after(grammarAccess.getTrafficSourceAccess().getNameKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__3__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14340:1: rule__TrafficSource__Group__4 : rule__TrafficSource__Group__4__Impl rule__TrafficSource__Group__5 ;
+    public final void rule__TrafficSource__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14344:1: ( rule__TrafficSource__Group__4__Impl rule__TrafficSource__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14345:2: rule__TrafficSource__Group__4__Impl rule__TrafficSource__Group__5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__4__Impl_in_rule__TrafficSource__Group__428593);
+            rule__TrafficSource__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__5_in_rule__TrafficSource__Group__428596);
+            rule__TrafficSource__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__4"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14352:1: rule__TrafficSource__Group__4__Impl : ( ( rule__TrafficSource__NameAssignment_4 ) ) ;
+    public final void rule__TrafficSource__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14356:1: ( ( ( rule__TrafficSource__NameAssignment_4 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14357:1: ( ( rule__TrafficSource__NameAssignment_4 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14357:1: ( ( rule__TrafficSource__NameAssignment_4 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14358:1: ( rule__TrafficSource__NameAssignment_4 )
+            {
+             before(grammarAccess.getTrafficSourceAccess().getNameAssignment_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14359:1: ( rule__TrafficSource__NameAssignment_4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14359:2: rule__TrafficSource__NameAssignment_4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__NameAssignment_4_in_rule__TrafficSource__Group__4__Impl28623);
+            rule__TrafficSource__NameAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTrafficSourceAccess().getNameAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__4__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14369:1: rule__TrafficSource__Group__5 : rule__TrafficSource__Group__5__Impl rule__TrafficSource__Group__6 ;
+    public final void rule__TrafficSource__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14373:1: ( rule__TrafficSource__Group__5__Impl rule__TrafficSource__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14374:2: rule__TrafficSource__Group__5__Impl rule__TrafficSource__Group__6
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__5__Impl_in_rule__TrafficSource__Group__528653);
+            rule__TrafficSource__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__6_in_rule__TrafficSource__Group__528656);
+            rule__TrafficSource__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__5"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14381:1: rule__TrafficSource__Group__5__Impl : ( ( rule__TrafficSource__Group_5__0 )? ) ;
+    public final void rule__TrafficSource__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14385:1: ( ( ( rule__TrafficSource__Group_5__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14386:1: ( ( rule__TrafficSource__Group_5__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14386:1: ( ( rule__TrafficSource__Group_5__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14387:1: ( rule__TrafficSource__Group_5__0 )?
+            {
+             before(grammarAccess.getTrafficSourceAccess().getGroup_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14388:1: ( rule__TrafficSource__Group_5__0 )?
+            int alt71=2;
+            int LA71_0 = input.LA(1);
+
+            if ( (LA71_0==67) ) {
+                alt71=1;
+            }
+            switch (alt71) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14388:2: rule__TrafficSource__Group_5__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_5__0_in_rule__TrafficSource__Group__5__Impl28683);
+                    rule__TrafficSource__Group_5__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getTrafficSourceAccess().getGroup_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__5__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14398:1: rule__TrafficSource__Group__6 : rule__TrafficSource__Group__6__Impl rule__TrafficSource__Group__7 ;
+    public final void rule__TrafficSource__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14402:1: ( rule__TrafficSource__Group__6__Impl rule__TrafficSource__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14403:2: rule__TrafficSource__Group__6__Impl rule__TrafficSource__Group__7
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__6__Impl_in_rule__TrafficSource__Group__628714);
+            rule__TrafficSource__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__7_in_rule__TrafficSource__Group__628717);
+            rule__TrafficSource__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__6"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14410:1: rule__TrafficSource__Group__6__Impl : ( ( rule__TrafficSource__Group_6__0 )? ) ;
+    public final void rule__TrafficSource__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14414:1: ( ( ( rule__TrafficSource__Group_6__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14415:1: ( ( rule__TrafficSource__Group_6__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14415:1: ( ( rule__TrafficSource__Group_6__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14416:1: ( rule__TrafficSource__Group_6__0 )?
+            {
+             before(grammarAccess.getTrafficSourceAccess().getGroup_6()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14417:1: ( rule__TrafficSource__Group_6__0 )?
+            int alt72=2;
+            int LA72_0 = input.LA(1);
+
+            if ( (LA72_0==106) ) {
+                alt72=1;
+            }
+            switch (alt72) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14417:2: rule__TrafficSource__Group_6__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_6__0_in_rule__TrafficSource__Group__6__Impl28744);
+                    rule__TrafficSource__Group_6__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getTrafficSourceAccess().getGroup_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__6__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14427:1: rule__TrafficSource__Group__7 : rule__TrafficSource__Group__7__Impl rule__TrafficSource__Group__8 ;
+    public final void rule__TrafficSource__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14431:1: ( rule__TrafficSource__Group__7__Impl rule__TrafficSource__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14432:2: rule__TrafficSource__Group__7__Impl rule__TrafficSource__Group__8
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__7__Impl_in_rule__TrafficSource__Group__728775);
+            rule__TrafficSource__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__8_in_rule__TrafficSource__Group__728778);
+            rule__TrafficSource__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__7"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14439:1: rule__TrafficSource__Group__7__Impl : ( 'workload' ) ;
+    public final void rule__TrafficSource__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14443:1: ( ( 'workload' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14444:1: ( 'workload' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14444:1: ( 'workload' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14445:1: 'workload'
+            {
+             before(grammarAccess.getTrafficSourceAccess().getWorkloadKeyword_7()); 
+            match(input,105,FollowSets001.FOLLOW_105_in_rule__TrafficSource__Group__7__Impl28806); 
+             after(grammarAccess.getTrafficSourceAccess().getWorkloadKeyword_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__7__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14458:1: rule__TrafficSource__Group__8 : rule__TrafficSource__Group__8__Impl rule__TrafficSource__Group__9 ;
+    public final void rule__TrafficSource__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14462:1: ( rule__TrafficSource__Group__8__Impl rule__TrafficSource__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14463:2: rule__TrafficSource__Group__8__Impl rule__TrafficSource__Group__9
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__8__Impl_in_rule__TrafficSource__Group__828837);
+            rule__TrafficSource__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__9_in_rule__TrafficSource__Group__828840);
+            rule__TrafficSource__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__8"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14470:1: rule__TrafficSource__Group__8__Impl : ( '{' ) ;
+    public final void rule__TrafficSource__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14474:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14475:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14475:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14476:1: '{'
+            {
+             before(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_8()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__TrafficSource__Group__8__Impl28868); 
+             after(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__8__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14489:1: rule__TrafficSource__Group__9 : rule__TrafficSource__Group__9__Impl rule__TrafficSource__Group__10 ;
+    public final void rule__TrafficSource__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14493:1: ( rule__TrafficSource__Group__9__Impl rule__TrafficSource__Group__10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14494:2: rule__TrafficSource__Group__9__Impl rule__TrafficSource__Group__10
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__9__Impl_in_rule__TrafficSource__Group__928899);
+            rule__TrafficSource__Group__9__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__10_in_rule__TrafficSource__Group__928902);
+            rule__TrafficSource__Group__10();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__9"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14501:1: rule__TrafficSource__Group__9__Impl : ( ( rule__TrafficSource__WorkloadAssignment_9 ) ) ;
+    public final void rule__TrafficSource__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14505:1: ( ( ( rule__TrafficSource__WorkloadAssignment_9 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14506:1: ( ( rule__TrafficSource__WorkloadAssignment_9 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14506:1: ( ( rule__TrafficSource__WorkloadAssignment_9 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14507:1: ( rule__TrafficSource__WorkloadAssignment_9 )
+            {
+             before(grammarAccess.getTrafficSourceAccess().getWorkloadAssignment_9()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14508:1: ( rule__TrafficSource__WorkloadAssignment_9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14508:2: rule__TrafficSource__WorkloadAssignment_9
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__WorkloadAssignment_9_in_rule__TrafficSource__Group__9__Impl28929);
+            rule__TrafficSource__WorkloadAssignment_9();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTrafficSourceAccess().getWorkloadAssignment_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__9__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14518:1: rule__TrafficSource__Group__10 : rule__TrafficSource__Group__10__Impl rule__TrafficSource__Group__11 ;
+    public final void rule__TrafficSource__Group__10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14522:1: ( rule__TrafficSource__Group__10__Impl rule__TrafficSource__Group__11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14523:2: rule__TrafficSource__Group__10__Impl rule__TrafficSource__Group__11
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__10__Impl_in_rule__TrafficSource__Group__1028959);
+            rule__TrafficSource__Group__10__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__11_in_rule__TrafficSource__Group__1028962);
+            rule__TrafficSource__Group__11();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__10"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__10__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14530:1: rule__TrafficSource__Group__10__Impl : ( ( rule__TrafficSource__Group_10__0 )* ) ;
+    public final void rule__TrafficSource__Group__10__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14534:1: ( ( ( rule__TrafficSource__Group_10__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14535:1: ( ( rule__TrafficSource__Group_10__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14535:1: ( ( rule__TrafficSource__Group_10__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14536:1: ( rule__TrafficSource__Group_10__0 )*
+            {
+             before(grammarAccess.getTrafficSourceAccess().getGroup_10()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14537:1: ( rule__TrafficSource__Group_10__0 )*
+            loop73:
+            do {
+                int alt73=2;
+                int LA73_0 = input.LA(1);
+
+                if ( (LA73_0==31) ) {
+                    alt73=1;
+                }
+
+
+                switch (alt73) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14537:2: rule__TrafficSource__Group_10__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_10__0_in_rule__TrafficSource__Group__10__Impl28989);
+            	    rule__TrafficSource__Group_10__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop73;
+                }
+            } while (true);
+
+             after(grammarAccess.getTrafficSourceAccess().getGroup_10()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__10__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14547:1: rule__TrafficSource__Group__11 : rule__TrafficSource__Group__11__Impl rule__TrafficSource__Group__12 ;
+    public final void rule__TrafficSource__Group__11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14551:1: ( rule__TrafficSource__Group__11__Impl rule__TrafficSource__Group__12 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14552:2: rule__TrafficSource__Group__11__Impl rule__TrafficSource__Group__12
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__11__Impl_in_rule__TrafficSource__Group__1129020);
+            rule__TrafficSource__Group__11__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__12_in_rule__TrafficSource__Group__1129023);
+            rule__TrafficSource__Group__12();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__11"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__11__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14559:1: rule__TrafficSource__Group__11__Impl : ( '}' ) ;
+    public final void rule__TrafficSource__Group__11__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14563:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14564:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14564:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14565:1: '}'
+            {
+             before(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_11()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__TrafficSource__Group__11__Impl29051); 
+             after(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_11()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__11__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__12"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14578:1: rule__TrafficSource__Group__12 : rule__TrafficSource__Group__12__Impl ;
+    public final void rule__TrafficSource__Group__12() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14582:1: ( rule__TrafficSource__Group__12__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14583:2: rule__TrafficSource__Group__12__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group__12__Impl_in_rule__TrafficSource__Group__1229082);
+            rule__TrafficSource__Group__12__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__12"
+
+
+    // $ANTLR start "rule__TrafficSource__Group__12__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14589:1: rule__TrafficSource__Group__12__Impl : ( '}' ) ;
+    public final void rule__TrafficSource__Group__12__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14593:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14594:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14594:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14595:1: '}'
+            {
+             before(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_12()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__TrafficSource__Group__12__Impl29110); 
+             after(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_12()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group__12__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_5__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14634:1: rule__TrafficSource__Group_5__0 : rule__TrafficSource__Group_5__0__Impl rule__TrafficSource__Group_5__1 ;
+    public final void rule__TrafficSource__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14638:1: ( rule__TrafficSource__Group_5__0__Impl rule__TrafficSource__Group_5__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14639:2: rule__TrafficSource__Group_5__0__Impl rule__TrafficSource__Group_5__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_5__0__Impl_in_rule__TrafficSource__Group_5__029167);
+            rule__TrafficSource__Group_5__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_5__1_in_rule__TrafficSource__Group_5__029170);
+            rule__TrafficSource__Group_5__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_5__0"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_5__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14646:1: rule__TrafficSource__Group_5__0__Impl : ( 'alternativeNames' ) ;
+    public final void rule__TrafficSource__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14650:1: ( ( 'alternativeNames' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14651:1: ( 'alternativeNames' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14651:1: ( 'alternativeNames' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14652:1: 'alternativeNames'
+            {
+             before(grammarAccess.getTrafficSourceAccess().getAlternativeNamesKeyword_5_0()); 
+            match(input,67,FollowSets001.FOLLOW_67_in_rule__TrafficSource__Group_5__0__Impl29198); 
+             after(grammarAccess.getTrafficSourceAccess().getAlternativeNamesKeyword_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_5__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14665:1: rule__TrafficSource__Group_5__1 : rule__TrafficSource__Group_5__1__Impl rule__TrafficSource__Group_5__2 ;
+    public final void rule__TrafficSource__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14669:1: ( rule__TrafficSource__Group_5__1__Impl rule__TrafficSource__Group_5__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14670:2: rule__TrafficSource__Group_5__1__Impl rule__TrafficSource__Group_5__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_5__1__Impl_in_rule__TrafficSource__Group_5__129229);
+            rule__TrafficSource__Group_5__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_5__2_in_rule__TrafficSource__Group_5__129232);
+            rule__TrafficSource__Group_5__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_5__1"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_5__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14677:1: rule__TrafficSource__Group_5__1__Impl : ( '{' ) ;
+    public final void rule__TrafficSource__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14681:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14682:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14682:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14683:1: '{'
+            {
+             before(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_5_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__TrafficSource__Group_5__1__Impl29260); 
+             after(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_5_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_5__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14696:1: rule__TrafficSource__Group_5__2 : rule__TrafficSource__Group_5__2__Impl rule__TrafficSource__Group_5__3 ;
+    public final void rule__TrafficSource__Group_5__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14700:1: ( rule__TrafficSource__Group_5__2__Impl rule__TrafficSource__Group_5__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14701:2: rule__TrafficSource__Group_5__2__Impl rule__TrafficSource__Group_5__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_5__2__Impl_in_rule__TrafficSource__Group_5__229291);
+            rule__TrafficSource__Group_5__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_5__3_in_rule__TrafficSource__Group_5__229294);
+            rule__TrafficSource__Group_5__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_5__2"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_5__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14708:1: rule__TrafficSource__Group_5__2__Impl : ( ( rule__TrafficSource__AlternativeNamesAssignment_5_2 ) ) ;
+    public final void rule__TrafficSource__Group_5__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14712:1: ( ( ( rule__TrafficSource__AlternativeNamesAssignment_5_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14713:1: ( ( rule__TrafficSource__AlternativeNamesAssignment_5_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14713:1: ( ( rule__TrafficSource__AlternativeNamesAssignment_5_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14714:1: ( rule__TrafficSource__AlternativeNamesAssignment_5_2 )
+            {
+             before(grammarAccess.getTrafficSourceAccess().getAlternativeNamesAssignment_5_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14715:1: ( rule__TrafficSource__AlternativeNamesAssignment_5_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14715:2: rule__TrafficSource__AlternativeNamesAssignment_5_2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__AlternativeNamesAssignment_5_2_in_rule__TrafficSource__Group_5__2__Impl29321);
+            rule__TrafficSource__AlternativeNamesAssignment_5_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTrafficSourceAccess().getAlternativeNamesAssignment_5_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_5__2__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_5__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14725:1: rule__TrafficSource__Group_5__3 : rule__TrafficSource__Group_5__3__Impl rule__TrafficSource__Group_5__4 ;
+    public final void rule__TrafficSource__Group_5__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14729:1: ( rule__TrafficSource__Group_5__3__Impl rule__TrafficSource__Group_5__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14730:2: rule__TrafficSource__Group_5__3__Impl rule__TrafficSource__Group_5__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_5__3__Impl_in_rule__TrafficSource__Group_5__329351);
+            rule__TrafficSource__Group_5__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_5__4_in_rule__TrafficSource__Group_5__329354);
+            rule__TrafficSource__Group_5__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_5__3"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_5__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14737:1: rule__TrafficSource__Group_5__3__Impl : ( ( rule__TrafficSource__Group_5_3__0 )* ) ;
+    public final void rule__TrafficSource__Group_5__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14741:1: ( ( ( rule__TrafficSource__Group_5_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14742:1: ( ( rule__TrafficSource__Group_5_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14742:1: ( ( rule__TrafficSource__Group_5_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14743:1: ( rule__TrafficSource__Group_5_3__0 )*
+            {
+             before(grammarAccess.getTrafficSourceAccess().getGroup_5_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14744:1: ( rule__TrafficSource__Group_5_3__0 )*
+            loop74:
+            do {
+                int alt74=2;
+                int LA74_0 = input.LA(1);
+
+                if ( (LA74_0==31) ) {
+                    alt74=1;
+                }
+
+
+                switch (alt74) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14744:2: rule__TrafficSource__Group_5_3__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_5_3__0_in_rule__TrafficSource__Group_5__3__Impl29381);
+            	    rule__TrafficSource__Group_5_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop74;
+                }
+            } while (true);
+
+             after(grammarAccess.getTrafficSourceAccess().getGroup_5_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_5__3__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_5__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14754:1: rule__TrafficSource__Group_5__4 : rule__TrafficSource__Group_5__4__Impl ;
+    public final void rule__TrafficSource__Group_5__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14758:1: ( rule__TrafficSource__Group_5__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14759:2: rule__TrafficSource__Group_5__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_5__4__Impl_in_rule__TrafficSource__Group_5__429412);
+            rule__TrafficSource__Group_5__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_5__4"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_5__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14765:1: rule__TrafficSource__Group_5__4__Impl : ( '}' ) ;
+    public final void rule__TrafficSource__Group_5__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14769:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14770:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14770:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14771:1: '}'
+            {
+             before(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_5_4()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__TrafficSource__Group_5__4__Impl29440); 
+             after(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_5_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_5__4__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_5_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14794:1: rule__TrafficSource__Group_5_3__0 : rule__TrafficSource__Group_5_3__0__Impl rule__TrafficSource__Group_5_3__1 ;
+    public final void rule__TrafficSource__Group_5_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14798:1: ( rule__TrafficSource__Group_5_3__0__Impl rule__TrafficSource__Group_5_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14799:2: rule__TrafficSource__Group_5_3__0__Impl rule__TrafficSource__Group_5_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_5_3__0__Impl_in_rule__TrafficSource__Group_5_3__029481);
+            rule__TrafficSource__Group_5_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_5_3__1_in_rule__TrafficSource__Group_5_3__029484);
+            rule__TrafficSource__Group_5_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_5_3__0"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_5_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14806:1: rule__TrafficSource__Group_5_3__0__Impl : ( ',' ) ;
+    public final void rule__TrafficSource__Group_5_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14810:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14811:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14811:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14812:1: ','
+            {
+             before(grammarAccess.getTrafficSourceAccess().getCommaKeyword_5_3_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__TrafficSource__Group_5_3__0__Impl29512); 
+             after(grammarAccess.getTrafficSourceAccess().getCommaKeyword_5_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_5_3__0__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_5_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14825:1: rule__TrafficSource__Group_5_3__1 : rule__TrafficSource__Group_5_3__1__Impl ;
+    public final void rule__TrafficSource__Group_5_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14829:1: ( rule__TrafficSource__Group_5_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14830:2: rule__TrafficSource__Group_5_3__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_5_3__1__Impl_in_rule__TrafficSource__Group_5_3__129543);
+            rule__TrafficSource__Group_5_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_5_3__1"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_5_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14836:1: rule__TrafficSource__Group_5_3__1__Impl : ( ( rule__TrafficSource__AlternativeNamesAssignment_5_3_1 ) ) ;
+    public final void rule__TrafficSource__Group_5_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14840:1: ( ( ( rule__TrafficSource__AlternativeNamesAssignment_5_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14841:1: ( ( rule__TrafficSource__AlternativeNamesAssignment_5_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14841:1: ( ( rule__TrafficSource__AlternativeNamesAssignment_5_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14842:1: ( rule__TrafficSource__AlternativeNamesAssignment_5_3_1 )
+            {
+             before(grammarAccess.getTrafficSourceAccess().getAlternativeNamesAssignment_5_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14843:1: ( rule__TrafficSource__AlternativeNamesAssignment_5_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14843:2: rule__TrafficSource__AlternativeNamesAssignment_5_3_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__AlternativeNamesAssignment_5_3_1_in_rule__TrafficSource__Group_5_3__1__Impl29570);
+            rule__TrafficSource__AlternativeNamesAssignment_5_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTrafficSourceAccess().getAlternativeNamesAssignment_5_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_5_3__1__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_6__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14857:1: rule__TrafficSource__Group_6__0 : rule__TrafficSource__Group_6__0__Impl rule__TrafficSource__Group_6__1 ;
+    public final void rule__TrafficSource__Group_6__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14861:1: ( rule__TrafficSource__Group_6__0__Impl rule__TrafficSource__Group_6__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14862:2: rule__TrafficSource__Group_6__0__Impl rule__TrafficSource__Group_6__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_6__0__Impl_in_rule__TrafficSource__Group_6__029604);
+            rule__TrafficSource__Group_6__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_6__1_in_rule__TrafficSource__Group_6__029607);
+            rule__TrafficSource__Group_6__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_6__0"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_6__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14869:1: rule__TrafficSource__Group_6__0__Impl : ( 'addresses' ) ;
+    public final void rule__TrafficSource__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14873:1: ( ( 'addresses' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14874:1: ( 'addresses' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14874:1: ( 'addresses' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14875:1: 'addresses'
+            {
+             before(grammarAccess.getTrafficSourceAccess().getAddressesKeyword_6_0()); 
+            match(input,106,FollowSets001.FOLLOW_106_in_rule__TrafficSource__Group_6__0__Impl29635); 
+             after(grammarAccess.getTrafficSourceAccess().getAddressesKeyword_6_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_6__0__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_6__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14888:1: rule__TrafficSource__Group_6__1 : rule__TrafficSource__Group_6__1__Impl rule__TrafficSource__Group_6__2 ;
+    public final void rule__TrafficSource__Group_6__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14892:1: ( rule__TrafficSource__Group_6__1__Impl rule__TrafficSource__Group_6__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14893:2: rule__TrafficSource__Group_6__1__Impl rule__TrafficSource__Group_6__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_6__1__Impl_in_rule__TrafficSource__Group_6__129666);
+            rule__TrafficSource__Group_6__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_6__2_in_rule__TrafficSource__Group_6__129669);
+            rule__TrafficSource__Group_6__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_6__1"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_6__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14900:1: rule__TrafficSource__Group_6__1__Impl : ( '{' ) ;
+    public final void rule__TrafficSource__Group_6__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14904:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14905:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14905:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14906:1: '{'
+            {
+             before(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_6_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__TrafficSource__Group_6__1__Impl29697); 
+             after(grammarAccess.getTrafficSourceAccess().getLeftCurlyBracketKeyword_6_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_6__1__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_6__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14919:1: rule__TrafficSource__Group_6__2 : rule__TrafficSource__Group_6__2__Impl rule__TrafficSource__Group_6__3 ;
+    public final void rule__TrafficSource__Group_6__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14923:1: ( rule__TrafficSource__Group_6__2__Impl rule__TrafficSource__Group_6__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14924:2: rule__TrafficSource__Group_6__2__Impl rule__TrafficSource__Group_6__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_6__2__Impl_in_rule__TrafficSource__Group_6__229728);
+            rule__TrafficSource__Group_6__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_6__3_in_rule__TrafficSource__Group_6__229731);
+            rule__TrafficSource__Group_6__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_6__2"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_6__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14931:1: rule__TrafficSource__Group_6__2__Impl : ( ( rule__TrafficSource__AddressesAssignment_6_2 ) ) ;
+    public final void rule__TrafficSource__Group_6__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14935:1: ( ( ( rule__TrafficSource__AddressesAssignment_6_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14936:1: ( ( rule__TrafficSource__AddressesAssignment_6_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14936:1: ( ( rule__TrafficSource__AddressesAssignment_6_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14937:1: ( rule__TrafficSource__AddressesAssignment_6_2 )
+            {
+             before(grammarAccess.getTrafficSourceAccess().getAddressesAssignment_6_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14938:1: ( rule__TrafficSource__AddressesAssignment_6_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14938:2: rule__TrafficSource__AddressesAssignment_6_2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__AddressesAssignment_6_2_in_rule__TrafficSource__Group_6__2__Impl29758);
+            rule__TrafficSource__AddressesAssignment_6_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTrafficSourceAccess().getAddressesAssignment_6_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_6__2__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_6__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14948:1: rule__TrafficSource__Group_6__3 : rule__TrafficSource__Group_6__3__Impl rule__TrafficSource__Group_6__4 ;
+    public final void rule__TrafficSource__Group_6__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14952:1: ( rule__TrafficSource__Group_6__3__Impl rule__TrafficSource__Group_6__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14953:2: rule__TrafficSource__Group_6__3__Impl rule__TrafficSource__Group_6__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_6__3__Impl_in_rule__TrafficSource__Group_6__329788);
+            rule__TrafficSource__Group_6__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_6__4_in_rule__TrafficSource__Group_6__329791);
+            rule__TrafficSource__Group_6__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_6__3"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_6__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14960:1: rule__TrafficSource__Group_6__3__Impl : ( ( rule__TrafficSource__Group_6_3__0 )* ) ;
+    public final void rule__TrafficSource__Group_6__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14964:1: ( ( ( rule__TrafficSource__Group_6_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14965:1: ( ( rule__TrafficSource__Group_6_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14965:1: ( ( rule__TrafficSource__Group_6_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14966:1: ( rule__TrafficSource__Group_6_3__0 )*
+            {
+             before(grammarAccess.getTrafficSourceAccess().getGroup_6_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14967:1: ( rule__TrafficSource__Group_6_3__0 )*
+            loop75:
+            do {
+                int alt75=2;
+                int LA75_0 = input.LA(1);
+
+                if ( (LA75_0==31) ) {
+                    alt75=1;
+                }
+
+
+                switch (alt75) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14967:2: rule__TrafficSource__Group_6_3__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_6_3__0_in_rule__TrafficSource__Group_6__3__Impl29818);
+            	    rule__TrafficSource__Group_6_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop75;
+                }
+            } while (true);
+
+             after(grammarAccess.getTrafficSourceAccess().getGroup_6_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_6__3__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_6__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14977:1: rule__TrafficSource__Group_6__4 : rule__TrafficSource__Group_6__4__Impl ;
+    public final void rule__TrafficSource__Group_6__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14981:1: ( rule__TrafficSource__Group_6__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14982:2: rule__TrafficSource__Group_6__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_6__4__Impl_in_rule__TrafficSource__Group_6__429849);
+            rule__TrafficSource__Group_6__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_6__4"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_6__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14988:1: rule__TrafficSource__Group_6__4__Impl : ( '}' ) ;
+    public final void rule__TrafficSource__Group_6__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14992:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14993:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14993:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:14994:1: '}'
+            {
+             before(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_6_4()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__TrafficSource__Group_6__4__Impl29877); 
+             after(grammarAccess.getTrafficSourceAccess().getRightCurlyBracketKeyword_6_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_6__4__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_6_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15017:1: rule__TrafficSource__Group_6_3__0 : rule__TrafficSource__Group_6_3__0__Impl rule__TrafficSource__Group_6_3__1 ;
+    public final void rule__TrafficSource__Group_6_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15021:1: ( rule__TrafficSource__Group_6_3__0__Impl rule__TrafficSource__Group_6_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15022:2: rule__TrafficSource__Group_6_3__0__Impl rule__TrafficSource__Group_6_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_6_3__0__Impl_in_rule__TrafficSource__Group_6_3__029918);
+            rule__TrafficSource__Group_6_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_6_3__1_in_rule__TrafficSource__Group_6_3__029921);
+            rule__TrafficSource__Group_6_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_6_3__0"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_6_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15029:1: rule__TrafficSource__Group_6_3__0__Impl : ( ',' ) ;
+    public final void rule__TrafficSource__Group_6_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15033:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15034:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15034:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15035:1: ','
+            {
+             before(grammarAccess.getTrafficSourceAccess().getCommaKeyword_6_3_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__TrafficSource__Group_6_3__0__Impl29949); 
+             after(grammarAccess.getTrafficSourceAccess().getCommaKeyword_6_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_6_3__0__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_6_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15048:1: rule__TrafficSource__Group_6_3__1 : rule__TrafficSource__Group_6_3__1__Impl ;
+    public final void rule__TrafficSource__Group_6_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15052:1: ( rule__TrafficSource__Group_6_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15053:2: rule__TrafficSource__Group_6_3__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_6_3__1__Impl_in_rule__TrafficSource__Group_6_3__129980);
+            rule__TrafficSource__Group_6_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_6_3__1"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_6_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15059:1: rule__TrafficSource__Group_6_3__1__Impl : ( ( rule__TrafficSource__AddressesAssignment_6_3_1 ) ) ;
+    public final void rule__TrafficSource__Group_6_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15063:1: ( ( ( rule__TrafficSource__AddressesAssignment_6_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15064:1: ( ( rule__TrafficSource__AddressesAssignment_6_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15064:1: ( ( rule__TrafficSource__AddressesAssignment_6_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15065:1: ( rule__TrafficSource__AddressesAssignment_6_3_1 )
+            {
+             before(grammarAccess.getTrafficSourceAccess().getAddressesAssignment_6_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15066:1: ( rule__TrafficSource__AddressesAssignment_6_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15066:2: rule__TrafficSource__AddressesAssignment_6_3_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__AddressesAssignment_6_3_1_in_rule__TrafficSource__Group_6_3__1__Impl30007);
+            rule__TrafficSource__AddressesAssignment_6_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTrafficSourceAccess().getAddressesAssignment_6_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_6_3__1__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_10__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15080:1: rule__TrafficSource__Group_10__0 : rule__TrafficSource__Group_10__0__Impl rule__TrafficSource__Group_10__1 ;
+    public final void rule__TrafficSource__Group_10__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15084:1: ( rule__TrafficSource__Group_10__0__Impl rule__TrafficSource__Group_10__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15085:2: rule__TrafficSource__Group_10__0__Impl rule__TrafficSource__Group_10__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_10__0__Impl_in_rule__TrafficSource__Group_10__030041);
+            rule__TrafficSource__Group_10__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_10__1_in_rule__TrafficSource__Group_10__030044);
+            rule__TrafficSource__Group_10__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_10__0"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_10__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15092:1: rule__TrafficSource__Group_10__0__Impl : ( ',' ) ;
+    public final void rule__TrafficSource__Group_10__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15096:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15097:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15097:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15098:1: ','
+            {
+             before(grammarAccess.getTrafficSourceAccess().getCommaKeyword_10_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__TrafficSource__Group_10__0__Impl30072); 
+             after(grammarAccess.getTrafficSourceAccess().getCommaKeyword_10_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_10__0__Impl"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_10__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15111:1: rule__TrafficSource__Group_10__1 : rule__TrafficSource__Group_10__1__Impl ;
+    public final void rule__TrafficSource__Group_10__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15115:1: ( rule__TrafficSource__Group_10__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15116:2: rule__TrafficSource__Group_10__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__Group_10__1__Impl_in_rule__TrafficSource__Group_10__130103);
+            rule__TrafficSource__Group_10__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_10__1"
+
+
+    // $ANTLR start "rule__TrafficSource__Group_10__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15122:1: rule__TrafficSource__Group_10__1__Impl : ( ( rule__TrafficSource__WorkloadAssignment_10_1 ) ) ;
+    public final void rule__TrafficSource__Group_10__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15126:1: ( ( ( rule__TrafficSource__WorkloadAssignment_10_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15127:1: ( ( rule__TrafficSource__WorkloadAssignment_10_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15127:1: ( ( rule__TrafficSource__WorkloadAssignment_10_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15128:1: ( rule__TrafficSource__WorkloadAssignment_10_1 )
+            {
+             before(grammarAccess.getTrafficSourceAccess().getWorkloadAssignment_10_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15129:1: ( rule__TrafficSource__WorkloadAssignment_10_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15129:2: rule__TrafficSource__WorkloadAssignment_10_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TrafficSource__WorkloadAssignment_10_1_in_rule__TrafficSource__Group_10__1__Impl30130);
+            rule__TrafficSource__WorkloadAssignment_10_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTrafficSourceAccess().getWorkloadAssignment_10_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__Group_10__1__Impl"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15143:1: rule__GenericWorkload__Group__0 : rule__GenericWorkload__Group__0__Impl rule__GenericWorkload__Group__1 ;
+    public final void rule__GenericWorkload__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15147:1: ( rule__GenericWorkload__Group__0__Impl rule__GenericWorkload__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15148:2: rule__GenericWorkload__Group__0__Impl rule__GenericWorkload__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group__0__Impl_in_rule__GenericWorkload__Group__030164);
+            rule__GenericWorkload__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group__1_in_rule__GenericWorkload__Group__030167);
+            rule__GenericWorkload__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group__0"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15155:1: rule__GenericWorkload__Group__0__Impl : ( () ) ;
+    public final void rule__GenericWorkload__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15159:1: ( ( () ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15160:1: ( () )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15160:1: ( () )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15161:1: ()
+            {
+             before(grammarAccess.getGenericWorkloadAccess().getGenericWorkloadAction_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15162:1: ()
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15164:1: 
+            {
+            }
+
+             after(grammarAccess.getGenericWorkloadAccess().getGenericWorkloadAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group__0__Impl"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15174:1: rule__GenericWorkload__Group__1 : rule__GenericWorkload__Group__1__Impl rule__GenericWorkload__Group__2 ;
+    public final void rule__GenericWorkload__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15178:1: ( rule__GenericWorkload__Group__1__Impl rule__GenericWorkload__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15179:2: rule__GenericWorkload__Group__1__Impl rule__GenericWorkload__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group__1__Impl_in_rule__GenericWorkload__Group__130225);
+            rule__GenericWorkload__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group__2_in_rule__GenericWorkload__Group__130228);
+            rule__GenericWorkload__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group__1"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15186:1: rule__GenericWorkload__Group__1__Impl : ( 'GenericWorkload' ) ;
+    public final void rule__GenericWorkload__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15190:1: ( ( 'GenericWorkload' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15191:1: ( 'GenericWorkload' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15191:1: ( 'GenericWorkload' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15192:1: 'GenericWorkload'
+            {
+             before(grammarAccess.getGenericWorkloadAccess().getGenericWorkloadKeyword_1()); 
+            match(input,107,FollowSets001.FOLLOW_107_in_rule__GenericWorkload__Group__1__Impl30256); 
+             after(grammarAccess.getGenericWorkloadAccess().getGenericWorkloadKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group__1__Impl"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15205:1: rule__GenericWorkload__Group__2 : rule__GenericWorkload__Group__2__Impl rule__GenericWorkload__Group__3 ;
+    public final void rule__GenericWorkload__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15209:1: ( rule__GenericWorkload__Group__2__Impl rule__GenericWorkload__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15210:2: rule__GenericWorkload__Group__2__Impl rule__GenericWorkload__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group__2__Impl_in_rule__GenericWorkload__Group__230287);
+            rule__GenericWorkload__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group__3_in_rule__GenericWorkload__Group__230290);
+            rule__GenericWorkload__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group__2"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15217:1: rule__GenericWorkload__Group__2__Impl : ( '{' ) ;
+    public final void rule__GenericWorkload__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15221:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15222:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15222:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15223:1: '{'
+            {
+             before(grammarAccess.getGenericWorkloadAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__GenericWorkload__Group__2__Impl30318); 
+             after(grammarAccess.getGenericWorkloadAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group__2__Impl"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15236:1: rule__GenericWorkload__Group__3 : rule__GenericWorkload__Group__3__Impl rule__GenericWorkload__Group__4 ;
+    public final void rule__GenericWorkload__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15240:1: ( rule__GenericWorkload__Group__3__Impl rule__GenericWorkload__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15241:2: rule__GenericWorkload__Group__3__Impl rule__GenericWorkload__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group__3__Impl_in_rule__GenericWorkload__Group__330349);
+            rule__GenericWorkload__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group__4_in_rule__GenericWorkload__Group__330352);
+            rule__GenericWorkload__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group__3"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15248:1: rule__GenericWorkload__Group__3__Impl : ( ( rule__GenericWorkload__Group_3__0 )? ) ;
+    public final void rule__GenericWorkload__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15252:1: ( ( ( rule__GenericWorkload__Group_3__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15253:1: ( ( rule__GenericWorkload__Group_3__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15253:1: ( ( rule__GenericWorkload__Group_3__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15254:1: ( rule__GenericWorkload__Group_3__0 )?
+            {
+             before(grammarAccess.getGenericWorkloadAccess().getGroup_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15255:1: ( rule__GenericWorkload__Group_3__0 )?
+            int alt76=2;
+            int LA76_0 = input.LA(1);
+
+            if ( (LA76_0==108) ) {
+                alt76=1;
+            }
+            switch (alt76) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15255:2: rule__GenericWorkload__Group_3__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group_3__0_in_rule__GenericWorkload__Group__3__Impl30379);
+                    rule__GenericWorkload__Group_3__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getGenericWorkloadAccess().getGroup_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group__3__Impl"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15265:1: rule__GenericWorkload__Group__4 : rule__GenericWorkload__Group__4__Impl ;
+    public final void rule__GenericWorkload__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15269:1: ( rule__GenericWorkload__Group__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15270:2: rule__GenericWorkload__Group__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group__4__Impl_in_rule__GenericWorkload__Group__430410);
+            rule__GenericWorkload__Group__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group__4"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15276:1: rule__GenericWorkload__Group__4__Impl : ( '}' ) ;
+    public final void rule__GenericWorkload__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15280:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15281:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15281:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15282:1: '}'
+            {
+             before(grammarAccess.getGenericWorkloadAccess().getRightCurlyBracketKeyword_4()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__GenericWorkload__Group__4__Impl30438); 
+             after(grammarAccess.getGenericWorkloadAccess().getRightCurlyBracketKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group__4__Impl"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15305:1: rule__GenericWorkload__Group_3__0 : rule__GenericWorkload__Group_3__0__Impl rule__GenericWorkload__Group_3__1 ;
+    public final void rule__GenericWorkload__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15309:1: ( rule__GenericWorkload__Group_3__0__Impl rule__GenericWorkload__Group_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15310:2: rule__GenericWorkload__Group_3__0__Impl rule__GenericWorkload__Group_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group_3__0__Impl_in_rule__GenericWorkload__Group_3__030479);
+            rule__GenericWorkload__Group_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group_3__1_in_rule__GenericWorkload__Group_3__030482);
+            rule__GenericWorkload__Group_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group_3__0"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15317:1: rule__GenericWorkload__Group_3__0__Impl : ( 'actions' ) ;
+    public final void rule__GenericWorkload__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15321:1: ( ( 'actions' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15322:1: ( 'actions' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15322:1: ( 'actions' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15323:1: 'actions'
+            {
+             before(grammarAccess.getGenericWorkloadAccess().getActionsKeyword_3_0()); 
+            match(input,108,FollowSets001.FOLLOW_108_in_rule__GenericWorkload__Group_3__0__Impl30510); 
+             after(grammarAccess.getGenericWorkloadAccess().getActionsKeyword_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15336:1: rule__GenericWorkload__Group_3__1 : rule__GenericWorkload__Group_3__1__Impl rule__GenericWorkload__Group_3__2 ;
+    public final void rule__GenericWorkload__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15340:1: ( rule__GenericWorkload__Group_3__1__Impl rule__GenericWorkload__Group_3__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15341:2: rule__GenericWorkload__Group_3__1__Impl rule__GenericWorkload__Group_3__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group_3__1__Impl_in_rule__GenericWorkload__Group_3__130541);
+            rule__GenericWorkload__Group_3__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group_3__2_in_rule__GenericWorkload__Group_3__130544);
+            rule__GenericWorkload__Group_3__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group_3__1"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15348:1: rule__GenericWorkload__Group_3__1__Impl : ( '{' ) ;
+    public final void rule__GenericWorkload__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15352:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15353:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15353:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15354:1: '{'
+            {
+             before(grammarAccess.getGenericWorkloadAccess().getLeftCurlyBracketKeyword_3_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__GenericWorkload__Group_3__1__Impl30572); 
+             after(grammarAccess.getGenericWorkloadAccess().getLeftCurlyBracketKeyword_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group_3__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15367:1: rule__GenericWorkload__Group_3__2 : rule__GenericWorkload__Group_3__2__Impl rule__GenericWorkload__Group_3__3 ;
+    public final void rule__GenericWorkload__Group_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15371:1: ( rule__GenericWorkload__Group_3__2__Impl rule__GenericWorkload__Group_3__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15372:2: rule__GenericWorkload__Group_3__2__Impl rule__GenericWorkload__Group_3__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group_3__2__Impl_in_rule__GenericWorkload__Group_3__230603);
+            rule__GenericWorkload__Group_3__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group_3__3_in_rule__GenericWorkload__Group_3__230606);
+            rule__GenericWorkload__Group_3__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group_3__2"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group_3__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15379:1: rule__GenericWorkload__Group_3__2__Impl : ( ( rule__GenericWorkload__ActionsAssignment_3_2 ) ) ;
+    public final void rule__GenericWorkload__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15383:1: ( ( ( rule__GenericWorkload__ActionsAssignment_3_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15384:1: ( ( rule__GenericWorkload__ActionsAssignment_3_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15384:1: ( ( rule__GenericWorkload__ActionsAssignment_3_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15385:1: ( rule__GenericWorkload__ActionsAssignment_3_2 )
+            {
+             before(grammarAccess.getGenericWorkloadAccess().getActionsAssignment_3_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15386:1: ( rule__GenericWorkload__ActionsAssignment_3_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15386:2: rule__GenericWorkload__ActionsAssignment_3_2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__ActionsAssignment_3_2_in_rule__GenericWorkload__Group_3__2__Impl30633);
+            rule__GenericWorkload__ActionsAssignment_3_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGenericWorkloadAccess().getActionsAssignment_3_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group_3__2__Impl"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group_3__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15396:1: rule__GenericWorkload__Group_3__3 : rule__GenericWorkload__Group_3__3__Impl rule__GenericWorkload__Group_3__4 ;
+    public final void rule__GenericWorkload__Group_3__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15400:1: ( rule__GenericWorkload__Group_3__3__Impl rule__GenericWorkload__Group_3__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15401:2: rule__GenericWorkload__Group_3__3__Impl rule__GenericWorkload__Group_3__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group_3__3__Impl_in_rule__GenericWorkload__Group_3__330663);
+            rule__GenericWorkload__Group_3__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group_3__4_in_rule__GenericWorkload__Group_3__330666);
+            rule__GenericWorkload__Group_3__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group_3__3"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group_3__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15408:1: rule__GenericWorkload__Group_3__3__Impl : ( ( rule__GenericWorkload__Group_3_3__0 )* ) ;
+    public final void rule__GenericWorkload__Group_3__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15412:1: ( ( ( rule__GenericWorkload__Group_3_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15413:1: ( ( rule__GenericWorkload__Group_3_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15413:1: ( ( rule__GenericWorkload__Group_3_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15414:1: ( rule__GenericWorkload__Group_3_3__0 )*
+            {
+             before(grammarAccess.getGenericWorkloadAccess().getGroup_3_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15415:1: ( rule__GenericWorkload__Group_3_3__0 )*
+            loop77:
+            do {
+                int alt77=2;
+                int LA77_0 = input.LA(1);
+
+                if ( (LA77_0==31) ) {
+                    alt77=1;
+                }
+
+
+                switch (alt77) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15415:2: rule__GenericWorkload__Group_3_3__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group_3_3__0_in_rule__GenericWorkload__Group_3__3__Impl30693);
+            	    rule__GenericWorkload__Group_3_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop77;
+                }
+            } while (true);
+
+             after(grammarAccess.getGenericWorkloadAccess().getGroup_3_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group_3__3__Impl"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group_3__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15425:1: rule__GenericWorkload__Group_3__4 : rule__GenericWorkload__Group_3__4__Impl ;
+    public final void rule__GenericWorkload__Group_3__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15429:1: ( rule__GenericWorkload__Group_3__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15430:2: rule__GenericWorkload__Group_3__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group_3__4__Impl_in_rule__GenericWorkload__Group_3__430724);
+            rule__GenericWorkload__Group_3__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group_3__4"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group_3__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15436:1: rule__GenericWorkload__Group_3__4__Impl : ( '}' ) ;
+    public final void rule__GenericWorkload__Group_3__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15440:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15441:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15441:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15442:1: '}'
+            {
+             before(grammarAccess.getGenericWorkloadAccess().getRightCurlyBracketKeyword_3_4()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__GenericWorkload__Group_3__4__Impl30752); 
+             after(grammarAccess.getGenericWorkloadAccess().getRightCurlyBracketKeyword_3_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group_3__4__Impl"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group_3_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15465:1: rule__GenericWorkload__Group_3_3__0 : rule__GenericWorkload__Group_3_3__0__Impl rule__GenericWorkload__Group_3_3__1 ;
+    public final void rule__GenericWorkload__Group_3_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15469:1: ( rule__GenericWorkload__Group_3_3__0__Impl rule__GenericWorkload__Group_3_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15470:2: rule__GenericWorkload__Group_3_3__0__Impl rule__GenericWorkload__Group_3_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group_3_3__0__Impl_in_rule__GenericWorkload__Group_3_3__030793);
+            rule__GenericWorkload__Group_3_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group_3_3__1_in_rule__GenericWorkload__Group_3_3__030796);
+            rule__GenericWorkload__Group_3_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group_3_3__0"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group_3_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15477:1: rule__GenericWorkload__Group_3_3__0__Impl : ( ',' ) ;
+    public final void rule__GenericWorkload__Group_3_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15481:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15482:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15482:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15483:1: ','
+            {
+             before(grammarAccess.getGenericWorkloadAccess().getCommaKeyword_3_3_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__GenericWorkload__Group_3_3__0__Impl30824); 
+             after(grammarAccess.getGenericWorkloadAccess().getCommaKeyword_3_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group_3_3__0__Impl"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group_3_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15496:1: rule__GenericWorkload__Group_3_3__1 : rule__GenericWorkload__Group_3_3__1__Impl ;
+    public final void rule__GenericWorkload__Group_3_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15500:1: ( rule__GenericWorkload__Group_3_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15501:2: rule__GenericWorkload__Group_3_3__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__Group_3_3__1__Impl_in_rule__GenericWorkload__Group_3_3__130855);
+            rule__GenericWorkload__Group_3_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group_3_3__1"
+
+
+    // $ANTLR start "rule__GenericWorkload__Group_3_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15507:1: rule__GenericWorkload__Group_3_3__1__Impl : ( ( rule__GenericWorkload__ActionsAssignment_3_3_1 ) ) ;
+    public final void rule__GenericWorkload__Group_3_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15511:1: ( ( ( rule__GenericWorkload__ActionsAssignment_3_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15512:1: ( ( rule__GenericWorkload__ActionsAssignment_3_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15512:1: ( ( rule__GenericWorkload__ActionsAssignment_3_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15513:1: ( rule__GenericWorkload__ActionsAssignment_3_3_1 )
+            {
+             before(grammarAccess.getGenericWorkloadAccess().getActionsAssignment_3_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15514:1: ( rule__GenericWorkload__ActionsAssignment_3_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15514:2: rule__GenericWorkload__ActionsAssignment_3_3_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__GenericWorkload__ActionsAssignment_3_3_1_in_rule__GenericWorkload__Group_3_3__1__Impl30882);
+            rule__GenericWorkload__ActionsAssignment_3_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getGenericWorkloadAccess().getActionsAssignment_3_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__Group_3_3__1__Impl"
+
+
+    // $ANTLR start "rule__BranchAction__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15528:1: rule__BranchAction__Group__0 : rule__BranchAction__Group__0__Impl rule__BranchAction__Group__1 ;
+    public final void rule__BranchAction__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15532:1: ( rule__BranchAction__Group__0__Impl rule__BranchAction__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15533:2: rule__BranchAction__Group__0__Impl rule__BranchAction__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__Group__0__Impl_in_rule__BranchAction__Group__030916);
+            rule__BranchAction__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__Group__1_in_rule__BranchAction__Group__030919);
+            rule__BranchAction__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group__0"
+
+
+    // $ANTLR start "rule__BranchAction__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15540:1: rule__BranchAction__Group__0__Impl : ( 'BranchAction' ) ;
+    public final void rule__BranchAction__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15544:1: ( ( 'BranchAction' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15545:1: ( 'BranchAction' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15545:1: ( 'BranchAction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15546:1: 'BranchAction'
+            {
+             before(grammarAccess.getBranchActionAccess().getBranchActionKeyword_0()); 
+            match(input,109,FollowSets001.FOLLOW_109_in_rule__BranchAction__Group__0__Impl30947); 
+             after(grammarAccess.getBranchActionAccess().getBranchActionKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group__0__Impl"
+
+
+    // $ANTLR start "rule__BranchAction__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15559:1: rule__BranchAction__Group__1 : rule__BranchAction__Group__1__Impl rule__BranchAction__Group__2 ;
+    public final void rule__BranchAction__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15563:1: ( rule__BranchAction__Group__1__Impl rule__BranchAction__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15564:2: rule__BranchAction__Group__1__Impl rule__BranchAction__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__Group__1__Impl_in_rule__BranchAction__Group__130978);
+            rule__BranchAction__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__Group__2_in_rule__BranchAction__Group__130981);
+            rule__BranchAction__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group__1"
+
+
+    // $ANTLR start "rule__BranchAction__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15571:1: rule__BranchAction__Group__1__Impl : ( '{' ) ;
+    public final void rule__BranchAction__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15575:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15576:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15576:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15577:1: '{'
+            {
+             before(grammarAccess.getBranchActionAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__BranchAction__Group__1__Impl31009); 
+             after(grammarAccess.getBranchActionAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group__1__Impl"
+
+
+    // $ANTLR start "rule__BranchAction__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15590:1: rule__BranchAction__Group__2 : rule__BranchAction__Group__2__Impl rule__BranchAction__Group__3 ;
+    public final void rule__BranchAction__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15594:1: ( rule__BranchAction__Group__2__Impl rule__BranchAction__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15595:2: rule__BranchAction__Group__2__Impl rule__BranchAction__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__Group__2__Impl_in_rule__BranchAction__Group__231040);
+            rule__BranchAction__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__Group__3_in_rule__BranchAction__Group__231043);
+            rule__BranchAction__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group__2"
+
+
+    // $ANTLR start "rule__BranchAction__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15602:1: rule__BranchAction__Group__2__Impl : ( 'intern' ) ;
+    public final void rule__BranchAction__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15606:1: ( ( 'intern' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15607:1: ( 'intern' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15607:1: ( 'intern' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15608:1: 'intern'
+            {
+             before(grammarAccess.getBranchActionAccess().getInternKeyword_2()); 
+            match(input,110,FollowSets001.FOLLOW_110_in_rule__BranchAction__Group__2__Impl31071); 
+             after(grammarAccess.getBranchActionAccess().getInternKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group__2__Impl"
+
+
+    // $ANTLR start "rule__BranchAction__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15621:1: rule__BranchAction__Group__3 : rule__BranchAction__Group__3__Impl rule__BranchAction__Group__4 ;
+    public final void rule__BranchAction__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15625:1: ( rule__BranchAction__Group__3__Impl rule__BranchAction__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15626:2: rule__BranchAction__Group__3__Impl rule__BranchAction__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__Group__3__Impl_in_rule__BranchAction__Group__331102);
+            rule__BranchAction__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__Group__4_in_rule__BranchAction__Group__331105);
+            rule__BranchAction__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group__3"
+
+
+    // $ANTLR start "rule__BranchAction__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15633:1: rule__BranchAction__Group__3__Impl : ( '{' ) ;
+    public final void rule__BranchAction__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15637:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15638:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15638:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15639:1: '{'
+            {
+             before(grammarAccess.getBranchActionAccess().getLeftCurlyBracketKeyword_3()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__BranchAction__Group__3__Impl31133); 
+             after(grammarAccess.getBranchActionAccess().getLeftCurlyBracketKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group__3__Impl"
+
+
+    // $ANTLR start "rule__BranchAction__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15652:1: rule__BranchAction__Group__4 : rule__BranchAction__Group__4__Impl rule__BranchAction__Group__5 ;
+    public final void rule__BranchAction__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15656:1: ( rule__BranchAction__Group__4__Impl rule__BranchAction__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15657:2: rule__BranchAction__Group__4__Impl rule__BranchAction__Group__5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__Group__4__Impl_in_rule__BranchAction__Group__431164);
+            rule__BranchAction__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__Group__5_in_rule__BranchAction__Group__431167);
+            rule__BranchAction__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group__4"
+
+
+    // $ANTLR start "rule__BranchAction__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15664:1: rule__BranchAction__Group__4__Impl : ( ( rule__BranchAction__InternAssignment_4 ) ) ;
+    public final void rule__BranchAction__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15668:1: ( ( ( rule__BranchAction__InternAssignment_4 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15669:1: ( ( rule__BranchAction__InternAssignment_4 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15669:1: ( ( rule__BranchAction__InternAssignment_4 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15670:1: ( rule__BranchAction__InternAssignment_4 )
+            {
+             before(grammarAccess.getBranchActionAccess().getInternAssignment_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15671:1: ( rule__BranchAction__InternAssignment_4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15671:2: rule__BranchAction__InternAssignment_4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__InternAssignment_4_in_rule__BranchAction__Group__4__Impl31194);
+            rule__BranchAction__InternAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getBranchActionAccess().getInternAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group__4__Impl"
+
+
+    // $ANTLR start "rule__BranchAction__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15681:1: rule__BranchAction__Group__5 : rule__BranchAction__Group__5__Impl rule__BranchAction__Group__6 ;
+    public final void rule__BranchAction__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15685:1: ( rule__BranchAction__Group__5__Impl rule__BranchAction__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15686:2: rule__BranchAction__Group__5__Impl rule__BranchAction__Group__6
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__Group__5__Impl_in_rule__BranchAction__Group__531224);
+            rule__BranchAction__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__Group__6_in_rule__BranchAction__Group__531227);
+            rule__BranchAction__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group__5"
+
+
+    // $ANTLR start "rule__BranchAction__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15693:1: rule__BranchAction__Group__5__Impl : ( ( rule__BranchAction__Group_5__0 )* ) ;
+    public final void rule__BranchAction__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15697:1: ( ( ( rule__BranchAction__Group_5__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15698:1: ( ( rule__BranchAction__Group_5__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15698:1: ( ( rule__BranchAction__Group_5__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15699:1: ( rule__BranchAction__Group_5__0 )*
+            {
+             before(grammarAccess.getBranchActionAccess().getGroup_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15700:1: ( rule__BranchAction__Group_5__0 )*
+            loop78:
+            do {
+                int alt78=2;
+                int LA78_0 = input.LA(1);
+
+                if ( (LA78_0==31) ) {
+                    alt78=1;
+                }
+
+
+                switch (alt78) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15700:2: rule__BranchAction__Group_5__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__BranchAction__Group_5__0_in_rule__BranchAction__Group__5__Impl31254);
+            	    rule__BranchAction__Group_5__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop78;
+                }
+            } while (true);
+
+             after(grammarAccess.getBranchActionAccess().getGroup_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group__5__Impl"
+
+
+    // $ANTLR start "rule__BranchAction__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15710:1: rule__BranchAction__Group__6 : rule__BranchAction__Group__6__Impl rule__BranchAction__Group__7 ;
+    public final void rule__BranchAction__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15714:1: ( rule__BranchAction__Group__6__Impl rule__BranchAction__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15715:2: rule__BranchAction__Group__6__Impl rule__BranchAction__Group__7
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__Group__6__Impl_in_rule__BranchAction__Group__631285);
+            rule__BranchAction__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__Group__7_in_rule__BranchAction__Group__631288);
+            rule__BranchAction__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group__6"
+
+
+    // $ANTLR start "rule__BranchAction__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15722:1: rule__BranchAction__Group__6__Impl : ( '}' ) ;
+    public final void rule__BranchAction__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15726:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15727:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15727:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15728:1: '}'
+            {
+             before(grammarAccess.getBranchActionAccess().getRightCurlyBracketKeyword_6()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__BranchAction__Group__6__Impl31316); 
+             after(grammarAccess.getBranchActionAccess().getRightCurlyBracketKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group__6__Impl"
+
+
+    // $ANTLR start "rule__BranchAction__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15741:1: rule__BranchAction__Group__7 : rule__BranchAction__Group__7__Impl ;
+    public final void rule__BranchAction__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15745:1: ( rule__BranchAction__Group__7__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15746:2: rule__BranchAction__Group__7__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__Group__7__Impl_in_rule__BranchAction__Group__731347);
+            rule__BranchAction__Group__7__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group__7"
+
+
+    // $ANTLR start "rule__BranchAction__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15752:1: rule__BranchAction__Group__7__Impl : ( '}' ) ;
+    public final void rule__BranchAction__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15756:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15757:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15757:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15758:1: '}'
+            {
+             before(grammarAccess.getBranchActionAccess().getRightCurlyBracketKeyword_7()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__BranchAction__Group__7__Impl31375); 
+             after(grammarAccess.getBranchActionAccess().getRightCurlyBracketKeyword_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group__7__Impl"
+
+
+    // $ANTLR start "rule__BranchAction__Group_5__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15787:1: rule__BranchAction__Group_5__0 : rule__BranchAction__Group_5__0__Impl rule__BranchAction__Group_5__1 ;
+    public final void rule__BranchAction__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15791:1: ( rule__BranchAction__Group_5__0__Impl rule__BranchAction__Group_5__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15792:2: rule__BranchAction__Group_5__0__Impl rule__BranchAction__Group_5__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__Group_5__0__Impl_in_rule__BranchAction__Group_5__031422);
+            rule__BranchAction__Group_5__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__Group_5__1_in_rule__BranchAction__Group_5__031425);
+            rule__BranchAction__Group_5__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group_5__0"
+
+
+    // $ANTLR start "rule__BranchAction__Group_5__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15799:1: rule__BranchAction__Group_5__0__Impl : ( ',' ) ;
+    public final void rule__BranchAction__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15803:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15804:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15804:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15805:1: ','
+            {
+             before(grammarAccess.getBranchActionAccess().getCommaKeyword_5_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__BranchAction__Group_5__0__Impl31453); 
+             after(grammarAccess.getBranchActionAccess().getCommaKeyword_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__BranchAction__Group_5__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15818:1: rule__BranchAction__Group_5__1 : rule__BranchAction__Group_5__1__Impl ;
+    public final void rule__BranchAction__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15822:1: ( rule__BranchAction__Group_5__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15823:2: rule__BranchAction__Group_5__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__Group_5__1__Impl_in_rule__BranchAction__Group_5__131484);
+            rule__BranchAction__Group_5__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group_5__1"
+
+
+    // $ANTLR start "rule__BranchAction__Group_5__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15829:1: rule__BranchAction__Group_5__1__Impl : ( ( rule__BranchAction__InternAssignment_5_1 ) ) ;
+    public final void rule__BranchAction__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15833:1: ( ( ( rule__BranchAction__InternAssignment_5_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15834:1: ( ( rule__BranchAction__InternAssignment_5_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15834:1: ( ( rule__BranchAction__InternAssignment_5_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15835:1: ( rule__BranchAction__InternAssignment_5_1 )
+            {
+             before(grammarAccess.getBranchActionAccess().getInternAssignment_5_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15836:1: ( rule__BranchAction__InternAssignment_5_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15836:2: rule__BranchAction__InternAssignment_5_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__BranchAction__InternAssignment_5_1_in_rule__BranchAction__Group_5__1__Impl31511);
+            rule__BranchAction__InternAssignment_5_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getBranchActionAccess().getInternAssignment_5_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__LoopAction__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15850:1: rule__LoopAction__Group__0 : rule__LoopAction__Group__0__Impl rule__LoopAction__Group__1 ;
+    public final void rule__LoopAction__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15854:1: ( rule__LoopAction__Group__0__Impl rule__LoopAction__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15855:2: rule__LoopAction__Group__0__Impl rule__LoopAction__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__LoopAction__Group__0__Impl_in_rule__LoopAction__Group__031545);
+            rule__LoopAction__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__LoopAction__Group__1_in_rule__LoopAction__Group__031548);
+            rule__LoopAction__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LoopAction__Group__0"
+
+
+    // $ANTLR start "rule__LoopAction__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15862:1: rule__LoopAction__Group__0__Impl : ( 'LoopAction' ) ;
+    public final void rule__LoopAction__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15866:1: ( ( 'LoopAction' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15867:1: ( 'LoopAction' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15867:1: ( 'LoopAction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15868:1: 'LoopAction'
+            {
+             before(grammarAccess.getLoopActionAccess().getLoopActionKeyword_0()); 
+            match(input,111,FollowSets001.FOLLOW_111_in_rule__LoopAction__Group__0__Impl31576); 
+             after(grammarAccess.getLoopActionAccess().getLoopActionKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LoopAction__Group__0__Impl"
+
+
+    // $ANTLR start "rule__LoopAction__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15881:1: rule__LoopAction__Group__1 : rule__LoopAction__Group__1__Impl rule__LoopAction__Group__2 ;
+    public final void rule__LoopAction__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15885:1: ( rule__LoopAction__Group__1__Impl rule__LoopAction__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15886:2: rule__LoopAction__Group__1__Impl rule__LoopAction__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__LoopAction__Group__1__Impl_in_rule__LoopAction__Group__131607);
+            rule__LoopAction__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__LoopAction__Group__2_in_rule__LoopAction__Group__131610);
+            rule__LoopAction__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LoopAction__Group__1"
+
+
+    // $ANTLR start "rule__LoopAction__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15893:1: rule__LoopAction__Group__1__Impl : ( '{' ) ;
+    public final void rule__LoopAction__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15897:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15898:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15898:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15899:1: '{'
+            {
+             before(grammarAccess.getLoopActionAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__LoopAction__Group__1__Impl31638); 
+             after(grammarAccess.getLoopActionAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LoopAction__Group__1__Impl"
+
+
+    // $ANTLR start "rule__LoopAction__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15912:1: rule__LoopAction__Group__2 : rule__LoopAction__Group__2__Impl rule__LoopAction__Group__3 ;
+    public final void rule__LoopAction__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15916:1: ( rule__LoopAction__Group__2__Impl rule__LoopAction__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15917:2: rule__LoopAction__Group__2__Impl rule__LoopAction__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__LoopAction__Group__2__Impl_in_rule__LoopAction__Group__231669);
+            rule__LoopAction__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__LoopAction__Group__3_in_rule__LoopAction__Group__231672);
+            rule__LoopAction__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LoopAction__Group__2"
+
+
+    // $ANTLR start "rule__LoopAction__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15924:1: rule__LoopAction__Group__2__Impl : ( 'intern' ) ;
+    public final void rule__LoopAction__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15928:1: ( ( 'intern' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15929:1: ( 'intern' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15929:1: ( 'intern' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15930:1: 'intern'
+            {
+             before(grammarAccess.getLoopActionAccess().getInternKeyword_2()); 
+            match(input,110,FollowSets001.FOLLOW_110_in_rule__LoopAction__Group__2__Impl31700); 
+             after(grammarAccess.getLoopActionAccess().getInternKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LoopAction__Group__2__Impl"
+
+
+    // $ANTLR start "rule__LoopAction__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15943:1: rule__LoopAction__Group__3 : rule__LoopAction__Group__3__Impl rule__LoopAction__Group__4 ;
+    public final void rule__LoopAction__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15947:1: ( rule__LoopAction__Group__3__Impl rule__LoopAction__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15948:2: rule__LoopAction__Group__3__Impl rule__LoopAction__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__LoopAction__Group__3__Impl_in_rule__LoopAction__Group__331731);
+            rule__LoopAction__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__LoopAction__Group__4_in_rule__LoopAction__Group__331734);
+            rule__LoopAction__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LoopAction__Group__3"
+
+
+    // $ANTLR start "rule__LoopAction__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15955:1: rule__LoopAction__Group__3__Impl : ( ( rule__LoopAction__InternAssignment_3 ) ) ;
+    public final void rule__LoopAction__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15959:1: ( ( ( rule__LoopAction__InternAssignment_3 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15960:1: ( ( rule__LoopAction__InternAssignment_3 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15960:1: ( ( rule__LoopAction__InternAssignment_3 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15961:1: ( rule__LoopAction__InternAssignment_3 )
+            {
+             before(grammarAccess.getLoopActionAccess().getInternAssignment_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15962:1: ( rule__LoopAction__InternAssignment_3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15962:2: rule__LoopAction__InternAssignment_3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__LoopAction__InternAssignment_3_in_rule__LoopAction__Group__3__Impl31761);
+            rule__LoopAction__InternAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getLoopActionAccess().getInternAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LoopAction__Group__3__Impl"
+
+
+    // $ANTLR start "rule__LoopAction__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15972:1: rule__LoopAction__Group__4 : rule__LoopAction__Group__4__Impl rule__LoopAction__Group__5 ;
+    public final void rule__LoopAction__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15976:1: ( rule__LoopAction__Group__4__Impl rule__LoopAction__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15977:2: rule__LoopAction__Group__4__Impl rule__LoopAction__Group__5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__LoopAction__Group__4__Impl_in_rule__LoopAction__Group__431791);
+            rule__LoopAction__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__LoopAction__Group__5_in_rule__LoopAction__Group__431794);
+            rule__LoopAction__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LoopAction__Group__4"
+
+
+    // $ANTLR start "rule__LoopAction__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15984:1: rule__LoopAction__Group__4__Impl : ( 'numIterations' ) ;
+    public final void rule__LoopAction__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15988:1: ( ( 'numIterations' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15989:1: ( 'numIterations' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15989:1: ( 'numIterations' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:15990:1: 'numIterations'
+            {
+             before(grammarAccess.getLoopActionAccess().getNumIterationsKeyword_4()); 
+            match(input,112,FollowSets001.FOLLOW_112_in_rule__LoopAction__Group__4__Impl31822); 
+             after(grammarAccess.getLoopActionAccess().getNumIterationsKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LoopAction__Group__4__Impl"
+
+
+    // $ANTLR start "rule__LoopAction__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16003:1: rule__LoopAction__Group__5 : rule__LoopAction__Group__5__Impl rule__LoopAction__Group__6 ;
+    public final void rule__LoopAction__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16007:1: ( rule__LoopAction__Group__5__Impl rule__LoopAction__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16008:2: rule__LoopAction__Group__5__Impl rule__LoopAction__Group__6
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__LoopAction__Group__5__Impl_in_rule__LoopAction__Group__531853);
+            rule__LoopAction__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__LoopAction__Group__6_in_rule__LoopAction__Group__531856);
+            rule__LoopAction__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LoopAction__Group__5"
+
+
+    // $ANTLR start "rule__LoopAction__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16015:1: rule__LoopAction__Group__5__Impl : ( ( rule__LoopAction__NumIterationsAssignment_5 ) ) ;
+    public final void rule__LoopAction__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16019:1: ( ( ( rule__LoopAction__NumIterationsAssignment_5 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16020:1: ( ( rule__LoopAction__NumIterationsAssignment_5 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16020:1: ( ( rule__LoopAction__NumIterationsAssignment_5 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16021:1: ( rule__LoopAction__NumIterationsAssignment_5 )
+            {
+             before(grammarAccess.getLoopActionAccess().getNumIterationsAssignment_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16022:1: ( rule__LoopAction__NumIterationsAssignment_5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16022:2: rule__LoopAction__NumIterationsAssignment_5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__LoopAction__NumIterationsAssignment_5_in_rule__LoopAction__Group__5__Impl31883);
+            rule__LoopAction__NumIterationsAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getLoopActionAccess().getNumIterationsAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LoopAction__Group__5__Impl"
+
+
+    // $ANTLR start "rule__LoopAction__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16032:1: rule__LoopAction__Group__6 : rule__LoopAction__Group__6__Impl ;
+    public final void rule__LoopAction__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16036:1: ( rule__LoopAction__Group__6__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16037:2: rule__LoopAction__Group__6__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__LoopAction__Group__6__Impl_in_rule__LoopAction__Group__631913);
+            rule__LoopAction__Group__6__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LoopAction__Group__6"
+
+
+    // $ANTLR start "rule__LoopAction__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16043:1: rule__LoopAction__Group__6__Impl : ( '}' ) ;
+    public final void rule__LoopAction__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16047:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16048:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16048:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16049:1: '}'
+            {
+             before(grammarAccess.getLoopActionAccess().getRightCurlyBracketKeyword_6()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__LoopAction__Group__6__Impl31941); 
+             after(grammarAccess.getLoopActionAccess().getRightCurlyBracketKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LoopAction__Group__6__Impl"
+
+
+    // $ANTLR start "rule__SequenceAction__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16076:1: rule__SequenceAction__Group__0 : rule__SequenceAction__Group__0__Impl rule__SequenceAction__Group__1 ;
+    public final void rule__SequenceAction__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16080:1: ( rule__SequenceAction__Group__0__Impl rule__SequenceAction__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16081:2: rule__SequenceAction__Group__0__Impl rule__SequenceAction__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__Group__0__Impl_in_rule__SequenceAction__Group__031986);
+            rule__SequenceAction__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__Group__1_in_rule__SequenceAction__Group__031989);
+            rule__SequenceAction__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group__0"
+
+
+    // $ANTLR start "rule__SequenceAction__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16088:1: rule__SequenceAction__Group__0__Impl : ( 'SequenceAction' ) ;
+    public final void rule__SequenceAction__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16092:1: ( ( 'SequenceAction' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16093:1: ( 'SequenceAction' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16093:1: ( 'SequenceAction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16094:1: 'SequenceAction'
+            {
+             before(grammarAccess.getSequenceActionAccess().getSequenceActionKeyword_0()); 
+            match(input,113,FollowSets001.FOLLOW_113_in_rule__SequenceAction__Group__0__Impl32017); 
+             after(grammarAccess.getSequenceActionAccess().getSequenceActionKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group__0__Impl"
+
+
+    // $ANTLR start "rule__SequenceAction__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16107:1: rule__SequenceAction__Group__1 : rule__SequenceAction__Group__1__Impl rule__SequenceAction__Group__2 ;
+    public final void rule__SequenceAction__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16111:1: ( rule__SequenceAction__Group__1__Impl rule__SequenceAction__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16112:2: rule__SequenceAction__Group__1__Impl rule__SequenceAction__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__Group__1__Impl_in_rule__SequenceAction__Group__132048);
+            rule__SequenceAction__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__Group__2_in_rule__SequenceAction__Group__132051);
+            rule__SequenceAction__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group__1"
+
+
+    // $ANTLR start "rule__SequenceAction__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16119:1: rule__SequenceAction__Group__1__Impl : ( '{' ) ;
+    public final void rule__SequenceAction__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16123:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16124:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16124:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16125:1: '{'
+            {
+             before(grammarAccess.getSequenceActionAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__SequenceAction__Group__1__Impl32079); 
+             after(grammarAccess.getSequenceActionAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group__1__Impl"
+
+
+    // $ANTLR start "rule__SequenceAction__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16138:1: rule__SequenceAction__Group__2 : rule__SequenceAction__Group__2__Impl rule__SequenceAction__Group__3 ;
+    public final void rule__SequenceAction__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16142:1: ( rule__SequenceAction__Group__2__Impl rule__SequenceAction__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16143:2: rule__SequenceAction__Group__2__Impl rule__SequenceAction__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__Group__2__Impl_in_rule__SequenceAction__Group__232110);
+            rule__SequenceAction__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__Group__3_in_rule__SequenceAction__Group__232113);
+            rule__SequenceAction__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group__2"
+
+
+    // $ANTLR start "rule__SequenceAction__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16150:1: rule__SequenceAction__Group__2__Impl : ( 'intern' ) ;
+    public final void rule__SequenceAction__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16154:1: ( ( 'intern' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16155:1: ( 'intern' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16155:1: ( 'intern' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16156:1: 'intern'
+            {
+             before(grammarAccess.getSequenceActionAccess().getInternKeyword_2()); 
+            match(input,110,FollowSets001.FOLLOW_110_in_rule__SequenceAction__Group__2__Impl32141); 
+             after(grammarAccess.getSequenceActionAccess().getInternKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group__2__Impl"
+
+
+    // $ANTLR start "rule__SequenceAction__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16169:1: rule__SequenceAction__Group__3 : rule__SequenceAction__Group__3__Impl rule__SequenceAction__Group__4 ;
+    public final void rule__SequenceAction__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16173:1: ( rule__SequenceAction__Group__3__Impl rule__SequenceAction__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16174:2: rule__SequenceAction__Group__3__Impl rule__SequenceAction__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__Group__3__Impl_in_rule__SequenceAction__Group__332172);
+            rule__SequenceAction__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__Group__4_in_rule__SequenceAction__Group__332175);
+            rule__SequenceAction__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group__3"
+
+
+    // $ANTLR start "rule__SequenceAction__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16181:1: rule__SequenceAction__Group__3__Impl : ( '{' ) ;
+    public final void rule__SequenceAction__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16185:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16186:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16186:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16187:1: '{'
+            {
+             before(grammarAccess.getSequenceActionAccess().getLeftCurlyBracketKeyword_3()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__SequenceAction__Group__3__Impl32203); 
+             after(grammarAccess.getSequenceActionAccess().getLeftCurlyBracketKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group__3__Impl"
+
+
+    // $ANTLR start "rule__SequenceAction__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16200:1: rule__SequenceAction__Group__4 : rule__SequenceAction__Group__4__Impl rule__SequenceAction__Group__5 ;
+    public final void rule__SequenceAction__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16204:1: ( rule__SequenceAction__Group__4__Impl rule__SequenceAction__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16205:2: rule__SequenceAction__Group__4__Impl rule__SequenceAction__Group__5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__Group__4__Impl_in_rule__SequenceAction__Group__432234);
+            rule__SequenceAction__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__Group__5_in_rule__SequenceAction__Group__432237);
+            rule__SequenceAction__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group__4"
+
+
+    // $ANTLR start "rule__SequenceAction__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16212:1: rule__SequenceAction__Group__4__Impl : ( ( rule__SequenceAction__InternAssignment_4 ) ) ;
+    public final void rule__SequenceAction__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16216:1: ( ( ( rule__SequenceAction__InternAssignment_4 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16217:1: ( ( rule__SequenceAction__InternAssignment_4 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16217:1: ( ( rule__SequenceAction__InternAssignment_4 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16218:1: ( rule__SequenceAction__InternAssignment_4 )
+            {
+             before(grammarAccess.getSequenceActionAccess().getInternAssignment_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16219:1: ( rule__SequenceAction__InternAssignment_4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16219:2: rule__SequenceAction__InternAssignment_4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__InternAssignment_4_in_rule__SequenceAction__Group__4__Impl32264);
+            rule__SequenceAction__InternAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSequenceActionAccess().getInternAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group__4__Impl"
+
+
+    // $ANTLR start "rule__SequenceAction__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16229:1: rule__SequenceAction__Group__5 : rule__SequenceAction__Group__5__Impl rule__SequenceAction__Group__6 ;
+    public final void rule__SequenceAction__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16233:1: ( rule__SequenceAction__Group__5__Impl rule__SequenceAction__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16234:2: rule__SequenceAction__Group__5__Impl rule__SequenceAction__Group__6
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__Group__5__Impl_in_rule__SequenceAction__Group__532294);
+            rule__SequenceAction__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__Group__6_in_rule__SequenceAction__Group__532297);
+            rule__SequenceAction__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group__5"
+
+
+    // $ANTLR start "rule__SequenceAction__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16241:1: rule__SequenceAction__Group__5__Impl : ( ( rule__SequenceAction__Group_5__0 )* ) ;
+    public final void rule__SequenceAction__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16245:1: ( ( ( rule__SequenceAction__Group_5__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16246:1: ( ( rule__SequenceAction__Group_5__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16246:1: ( ( rule__SequenceAction__Group_5__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16247:1: ( rule__SequenceAction__Group_5__0 )*
+            {
+             before(grammarAccess.getSequenceActionAccess().getGroup_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16248:1: ( rule__SequenceAction__Group_5__0 )*
+            loop79:
+            do {
+                int alt79=2;
+                int LA79_0 = input.LA(1);
+
+                if ( (LA79_0==31) ) {
+                    alt79=1;
+                }
+
+
+                switch (alt79) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16248:2: rule__SequenceAction__Group_5__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__Group_5__0_in_rule__SequenceAction__Group__5__Impl32324);
+            	    rule__SequenceAction__Group_5__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop79;
+                }
+            } while (true);
+
+             after(grammarAccess.getSequenceActionAccess().getGroup_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group__5__Impl"
+
+
+    // $ANTLR start "rule__SequenceAction__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16258:1: rule__SequenceAction__Group__6 : rule__SequenceAction__Group__6__Impl rule__SequenceAction__Group__7 ;
+    public final void rule__SequenceAction__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16262:1: ( rule__SequenceAction__Group__6__Impl rule__SequenceAction__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16263:2: rule__SequenceAction__Group__6__Impl rule__SequenceAction__Group__7
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__Group__6__Impl_in_rule__SequenceAction__Group__632355);
+            rule__SequenceAction__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__Group__7_in_rule__SequenceAction__Group__632358);
+            rule__SequenceAction__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group__6"
+
+
+    // $ANTLR start "rule__SequenceAction__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16270:1: rule__SequenceAction__Group__6__Impl : ( '}' ) ;
+    public final void rule__SequenceAction__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16274:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16275:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16275:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16276:1: '}'
+            {
+             before(grammarAccess.getSequenceActionAccess().getRightCurlyBracketKeyword_6()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__SequenceAction__Group__6__Impl32386); 
+             after(grammarAccess.getSequenceActionAccess().getRightCurlyBracketKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group__6__Impl"
+
+
+    // $ANTLR start "rule__SequenceAction__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16289:1: rule__SequenceAction__Group__7 : rule__SequenceAction__Group__7__Impl ;
+    public final void rule__SequenceAction__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16293:1: ( rule__SequenceAction__Group__7__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16294:2: rule__SequenceAction__Group__7__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__Group__7__Impl_in_rule__SequenceAction__Group__732417);
+            rule__SequenceAction__Group__7__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group__7"
+
+
+    // $ANTLR start "rule__SequenceAction__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16300:1: rule__SequenceAction__Group__7__Impl : ( '}' ) ;
+    public final void rule__SequenceAction__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16304:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16305:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16305:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16306:1: '}'
+            {
+             before(grammarAccess.getSequenceActionAccess().getRightCurlyBracketKeyword_7()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__SequenceAction__Group__7__Impl32445); 
+             after(grammarAccess.getSequenceActionAccess().getRightCurlyBracketKeyword_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group__7__Impl"
+
+
+    // $ANTLR start "rule__SequenceAction__Group_5__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16335:1: rule__SequenceAction__Group_5__0 : rule__SequenceAction__Group_5__0__Impl rule__SequenceAction__Group_5__1 ;
+    public final void rule__SequenceAction__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16339:1: ( rule__SequenceAction__Group_5__0__Impl rule__SequenceAction__Group_5__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16340:2: rule__SequenceAction__Group_5__0__Impl rule__SequenceAction__Group_5__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__Group_5__0__Impl_in_rule__SequenceAction__Group_5__032492);
+            rule__SequenceAction__Group_5__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__Group_5__1_in_rule__SequenceAction__Group_5__032495);
+            rule__SequenceAction__Group_5__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group_5__0"
+
+
+    // $ANTLR start "rule__SequenceAction__Group_5__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16347:1: rule__SequenceAction__Group_5__0__Impl : ( ',' ) ;
+    public final void rule__SequenceAction__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16351:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16352:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16352:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16353:1: ','
+            {
+             before(grammarAccess.getSequenceActionAccess().getCommaKeyword_5_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__SequenceAction__Group_5__0__Impl32523); 
+             after(grammarAccess.getSequenceActionAccess().getCommaKeyword_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__SequenceAction__Group_5__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16366:1: rule__SequenceAction__Group_5__1 : rule__SequenceAction__Group_5__1__Impl ;
+    public final void rule__SequenceAction__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16370:1: ( rule__SequenceAction__Group_5__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16371:2: rule__SequenceAction__Group_5__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__Group_5__1__Impl_in_rule__SequenceAction__Group_5__132554);
+            rule__SequenceAction__Group_5__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group_5__1"
+
+
+    // $ANTLR start "rule__SequenceAction__Group_5__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16377:1: rule__SequenceAction__Group_5__1__Impl : ( ( rule__SequenceAction__InternAssignment_5_1 ) ) ;
+    public final void rule__SequenceAction__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16381:1: ( ( ( rule__SequenceAction__InternAssignment_5_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16382:1: ( ( rule__SequenceAction__InternAssignment_5_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16382:1: ( ( rule__SequenceAction__InternAssignment_5_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16383:1: ( rule__SequenceAction__InternAssignment_5_1 )
+            {
+             before(grammarAccess.getSequenceActionAccess().getInternAssignment_5_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16384:1: ( rule__SequenceAction__InternAssignment_5_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16384:2: rule__SequenceAction__InternAssignment_5_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__SequenceAction__InternAssignment_5_1_in_rule__SequenceAction__Group_5__1__Impl32581);
+            rule__SequenceAction__InternAssignment_5_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getSequenceActionAccess().getInternAssignment_5_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__StartAction__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16398:1: rule__StartAction__Group__0 : rule__StartAction__Group__0__Impl rule__StartAction__Group__1 ;
+    public final void rule__StartAction__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16402:1: ( rule__StartAction__Group__0__Impl rule__StartAction__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16403:2: rule__StartAction__Group__0__Impl rule__StartAction__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__StartAction__Group__0__Impl_in_rule__StartAction__Group__032615);
+            rule__StartAction__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__StartAction__Group__1_in_rule__StartAction__Group__032618);
+            rule__StartAction__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StartAction__Group__0"
+
+
+    // $ANTLR start "rule__StartAction__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16410:1: rule__StartAction__Group__0__Impl : ( () ) ;
+    public final void rule__StartAction__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16414:1: ( ( () ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16415:1: ( () )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16415:1: ( () )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16416:1: ()
+            {
+             before(grammarAccess.getStartActionAccess().getStartActionAction_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16417:1: ()
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16419:1: 
+            {
+            }
+
+             after(grammarAccess.getStartActionAccess().getStartActionAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StartAction__Group__0__Impl"
+
+
+    // $ANTLR start "rule__StartAction__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16429:1: rule__StartAction__Group__1 : rule__StartAction__Group__1__Impl ;
+    public final void rule__StartAction__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16433:1: ( rule__StartAction__Group__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16434:2: rule__StartAction__Group__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__StartAction__Group__1__Impl_in_rule__StartAction__Group__132676);
+            rule__StartAction__Group__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StartAction__Group__1"
+
+
+    // $ANTLR start "rule__StartAction__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16440:1: rule__StartAction__Group__1__Impl : ( 'StartAction' ) ;
+    public final void rule__StartAction__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16444:1: ( ( 'StartAction' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16445:1: ( 'StartAction' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16445:1: ( 'StartAction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16446:1: 'StartAction'
+            {
+             before(grammarAccess.getStartActionAccess().getStartActionKeyword_1()); 
+            match(input,114,FollowSets001.FOLLOW_114_in_rule__StartAction__Group__1__Impl32704); 
+             after(grammarAccess.getStartActionAccess().getStartActionKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StartAction__Group__1__Impl"
+
+
+    // $ANTLR start "rule__StopAction__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16463:1: rule__StopAction__Group__0 : rule__StopAction__Group__0__Impl rule__StopAction__Group__1 ;
+    public final void rule__StopAction__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16467:1: ( rule__StopAction__Group__0__Impl rule__StopAction__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16468:2: rule__StopAction__Group__0__Impl rule__StopAction__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__StopAction__Group__0__Impl_in_rule__StopAction__Group__032739);
+            rule__StopAction__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__StopAction__Group__1_in_rule__StopAction__Group__032742);
+            rule__StopAction__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StopAction__Group__0"
+
+
+    // $ANTLR start "rule__StopAction__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16475:1: rule__StopAction__Group__0__Impl : ( () ) ;
+    public final void rule__StopAction__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16479:1: ( ( () ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16480:1: ( () )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16480:1: ( () )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16481:1: ()
+            {
+             before(grammarAccess.getStopActionAccess().getStopActionAction_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16482:1: ()
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16484:1: 
+            {
+            }
+
+             after(grammarAccess.getStopActionAccess().getStopActionAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StopAction__Group__0__Impl"
+
+
+    // $ANTLR start "rule__StopAction__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16494:1: rule__StopAction__Group__1 : rule__StopAction__Group__1__Impl ;
+    public final void rule__StopAction__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16498:1: ( rule__StopAction__Group__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16499:2: rule__StopAction__Group__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__StopAction__Group__1__Impl_in_rule__StopAction__Group__132800);
+            rule__StopAction__Group__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StopAction__Group__1"
+
+
+    // $ANTLR start "rule__StopAction__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16505:1: rule__StopAction__Group__1__Impl : ( 'StopAction' ) ;
+    public final void rule__StopAction__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16509:1: ( ( 'StopAction' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16510:1: ( 'StopAction' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16510:1: ( 'StopAction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16511:1: 'StopAction'
+            {
+             before(grammarAccess.getStopActionAccess().getStopActionKeyword_1()); 
+            match(input,115,FollowSets001.FOLLOW_115_in_rule__StopAction__Group__1__Impl32828); 
+             after(grammarAccess.getStopActionAccess().getStopActionKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__StopAction__Group__1__Impl"
+
+
+    // $ANTLR start "rule__TransmitAction__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16528:1: rule__TransmitAction__Group__0 : rule__TransmitAction__Group__0__Impl rule__TransmitAction__Group__1 ;
+    public final void rule__TransmitAction__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16532:1: ( rule__TransmitAction__Group__0__Impl rule__TransmitAction__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16533:2: rule__TransmitAction__Group__0__Impl rule__TransmitAction__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TransmitAction__Group__0__Impl_in_rule__TransmitAction__Group__032863);
+            rule__TransmitAction__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TransmitAction__Group__1_in_rule__TransmitAction__Group__032866);
+            rule__TransmitAction__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TransmitAction__Group__0"
+
+
+    // $ANTLR start "rule__TransmitAction__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16540:1: rule__TransmitAction__Group__0__Impl : ( 'TransmitAction' ) ;
+    public final void rule__TransmitAction__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16544:1: ( ( 'TransmitAction' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16545:1: ( 'TransmitAction' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16545:1: ( 'TransmitAction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16546:1: 'TransmitAction'
+            {
+             before(grammarAccess.getTransmitActionAccess().getTransmitActionKeyword_0()); 
+            match(input,116,FollowSets001.FOLLOW_116_in_rule__TransmitAction__Group__0__Impl32894); 
+             after(grammarAccess.getTransmitActionAccess().getTransmitActionKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TransmitAction__Group__0__Impl"
+
+
+    // $ANTLR start "rule__TransmitAction__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16559:1: rule__TransmitAction__Group__1 : rule__TransmitAction__Group__1__Impl rule__TransmitAction__Group__2 ;
+    public final void rule__TransmitAction__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16563:1: ( rule__TransmitAction__Group__1__Impl rule__TransmitAction__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16564:2: rule__TransmitAction__Group__1__Impl rule__TransmitAction__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TransmitAction__Group__1__Impl_in_rule__TransmitAction__Group__132925);
+            rule__TransmitAction__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TransmitAction__Group__2_in_rule__TransmitAction__Group__132928);
+            rule__TransmitAction__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TransmitAction__Group__1"
+
+
+    // $ANTLR start "rule__TransmitAction__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16571:1: rule__TransmitAction__Group__1__Impl : ( '{' ) ;
+    public final void rule__TransmitAction__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16575:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16576:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16576:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16577:1: '{'
+            {
+             before(grammarAccess.getTransmitActionAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__TransmitAction__Group__1__Impl32956); 
+             after(grammarAccess.getTransmitActionAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TransmitAction__Group__1__Impl"
+
+
+    // $ANTLR start "rule__TransmitAction__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16590:1: rule__TransmitAction__Group__2 : rule__TransmitAction__Group__2__Impl rule__TransmitAction__Group__3 ;
+    public final void rule__TransmitAction__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16594:1: ( rule__TransmitAction__Group__2__Impl rule__TransmitAction__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16595:2: rule__TransmitAction__Group__2__Impl rule__TransmitAction__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TransmitAction__Group__2__Impl_in_rule__TransmitAction__Group__232987);
+            rule__TransmitAction__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TransmitAction__Group__3_in_rule__TransmitAction__Group__232990);
+            rule__TransmitAction__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TransmitAction__Group__2"
+
+
+    // $ANTLR start "rule__TransmitAction__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16602:1: rule__TransmitAction__Group__2__Impl : ( 'flow' ) ;
+    public final void rule__TransmitAction__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16606:1: ( ( 'flow' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16607:1: ( 'flow' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16607:1: ( 'flow' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16608:1: 'flow'
+            {
+             before(grammarAccess.getTransmitActionAccess().getFlowKeyword_2()); 
+            match(input,117,FollowSets001.FOLLOW_117_in_rule__TransmitAction__Group__2__Impl33018); 
+             after(grammarAccess.getTransmitActionAccess().getFlowKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TransmitAction__Group__2__Impl"
+
+
+    // $ANTLR start "rule__TransmitAction__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16621:1: rule__TransmitAction__Group__3 : rule__TransmitAction__Group__3__Impl rule__TransmitAction__Group__4 ;
+    public final void rule__TransmitAction__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16625:1: ( rule__TransmitAction__Group__3__Impl rule__TransmitAction__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16626:2: rule__TransmitAction__Group__3__Impl rule__TransmitAction__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TransmitAction__Group__3__Impl_in_rule__TransmitAction__Group__333049);
+            rule__TransmitAction__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__TransmitAction__Group__4_in_rule__TransmitAction__Group__333052);
+            rule__TransmitAction__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TransmitAction__Group__3"
+
+
+    // $ANTLR start "rule__TransmitAction__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16633:1: rule__TransmitAction__Group__3__Impl : ( ( rule__TransmitAction__FlowAssignment_3 ) ) ;
+    public final void rule__TransmitAction__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16637:1: ( ( ( rule__TransmitAction__FlowAssignment_3 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16638:1: ( ( rule__TransmitAction__FlowAssignment_3 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16638:1: ( ( rule__TransmitAction__FlowAssignment_3 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16639:1: ( rule__TransmitAction__FlowAssignment_3 )
+            {
+             before(grammarAccess.getTransmitActionAccess().getFlowAssignment_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16640:1: ( rule__TransmitAction__FlowAssignment_3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16640:2: rule__TransmitAction__FlowAssignment_3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TransmitAction__FlowAssignment_3_in_rule__TransmitAction__Group__3__Impl33079);
+            rule__TransmitAction__FlowAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getTransmitActionAccess().getFlowAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TransmitAction__Group__3__Impl"
+
+
+    // $ANTLR start "rule__TransmitAction__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16650:1: rule__TransmitAction__Group__4 : rule__TransmitAction__Group__4__Impl ;
+    public final void rule__TransmitAction__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16654:1: ( rule__TransmitAction__Group__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16655:2: rule__TransmitAction__Group__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__TransmitAction__Group__4__Impl_in_rule__TransmitAction__Group__433109);
+            rule__TransmitAction__Group__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TransmitAction__Group__4"
+
+
+    // $ANTLR start "rule__TransmitAction__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16661:1: rule__TransmitAction__Group__4__Impl : ( '}' ) ;
+    public final void rule__TransmitAction__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16665:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16666:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16666:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16667:1: '}'
+            {
+             before(grammarAccess.getTransmitActionAccess().getRightCurlyBracketKeyword_4()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__TransmitAction__Group__4__Impl33137); 
+             after(grammarAccess.getTransmitActionAccess().getRightCurlyBracketKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TransmitAction__Group__4__Impl"
+
+
+    // $ANTLR start "rule__WaitAction__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16690:1: rule__WaitAction__Group__0 : rule__WaitAction__Group__0__Impl rule__WaitAction__Group__1 ;
+    public final void rule__WaitAction__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16694:1: ( rule__WaitAction__Group__0__Impl rule__WaitAction__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16695:2: rule__WaitAction__Group__0__Impl rule__WaitAction__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__WaitAction__Group__0__Impl_in_rule__WaitAction__Group__033178);
+            rule__WaitAction__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__WaitAction__Group__1_in_rule__WaitAction__Group__033181);
+            rule__WaitAction__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WaitAction__Group__0"
+
+
+    // $ANTLR start "rule__WaitAction__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16702:1: rule__WaitAction__Group__0__Impl : ( 'WaitAction' ) ;
+    public final void rule__WaitAction__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16706:1: ( ( 'WaitAction' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16707:1: ( 'WaitAction' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16707:1: ( 'WaitAction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16708:1: 'WaitAction'
+            {
+             before(grammarAccess.getWaitActionAccess().getWaitActionKeyword_0()); 
+            match(input,118,FollowSets001.FOLLOW_118_in_rule__WaitAction__Group__0__Impl33209); 
+             after(grammarAccess.getWaitActionAccess().getWaitActionKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WaitAction__Group__0__Impl"
+
+
+    // $ANTLR start "rule__WaitAction__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16721:1: rule__WaitAction__Group__1 : rule__WaitAction__Group__1__Impl rule__WaitAction__Group__2 ;
+    public final void rule__WaitAction__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16725:1: ( rule__WaitAction__Group__1__Impl rule__WaitAction__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16726:2: rule__WaitAction__Group__1__Impl rule__WaitAction__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__WaitAction__Group__1__Impl_in_rule__WaitAction__Group__133240);
+            rule__WaitAction__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__WaitAction__Group__2_in_rule__WaitAction__Group__133243);
+            rule__WaitAction__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WaitAction__Group__1"
+
+
+    // $ANTLR start "rule__WaitAction__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16733:1: rule__WaitAction__Group__1__Impl : ( '{' ) ;
+    public final void rule__WaitAction__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16737:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16738:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16738:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16739:1: '{'
+            {
+             before(grammarAccess.getWaitActionAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__WaitAction__Group__1__Impl33271); 
+             after(grammarAccess.getWaitActionAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WaitAction__Group__1__Impl"
+
+
+    // $ANTLR start "rule__WaitAction__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16752:1: rule__WaitAction__Group__2 : rule__WaitAction__Group__2__Impl rule__WaitAction__Group__3 ;
+    public final void rule__WaitAction__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16756:1: ( rule__WaitAction__Group__2__Impl rule__WaitAction__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16757:2: rule__WaitAction__Group__2__Impl rule__WaitAction__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__WaitAction__Group__2__Impl_in_rule__WaitAction__Group__233302);
+            rule__WaitAction__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__WaitAction__Group__3_in_rule__WaitAction__Group__233305);
+            rule__WaitAction__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WaitAction__Group__2"
+
+
+    // $ANTLR start "rule__WaitAction__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16764:1: rule__WaitAction__Group__2__Impl : ( 'waitTime' ) ;
+    public final void rule__WaitAction__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16768:1: ( ( 'waitTime' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16769:1: ( 'waitTime' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16769:1: ( 'waitTime' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16770:1: 'waitTime'
+            {
+             before(grammarAccess.getWaitActionAccess().getWaitTimeKeyword_2()); 
+            match(input,119,FollowSets001.FOLLOW_119_in_rule__WaitAction__Group__2__Impl33333); 
+             after(grammarAccess.getWaitActionAccess().getWaitTimeKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WaitAction__Group__2__Impl"
+
+
+    // $ANTLR start "rule__WaitAction__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16783:1: rule__WaitAction__Group__3 : rule__WaitAction__Group__3__Impl rule__WaitAction__Group__4 ;
+    public final void rule__WaitAction__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16787:1: ( rule__WaitAction__Group__3__Impl rule__WaitAction__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16788:2: rule__WaitAction__Group__3__Impl rule__WaitAction__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__WaitAction__Group__3__Impl_in_rule__WaitAction__Group__333364);
+            rule__WaitAction__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__WaitAction__Group__4_in_rule__WaitAction__Group__333367);
+            rule__WaitAction__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WaitAction__Group__3"
+
+
+    // $ANTLR start "rule__WaitAction__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16795:1: rule__WaitAction__Group__3__Impl : ( ( rule__WaitAction__WaitTimeAssignment_3 ) ) ;
+    public final void rule__WaitAction__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16799:1: ( ( ( rule__WaitAction__WaitTimeAssignment_3 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16800:1: ( ( rule__WaitAction__WaitTimeAssignment_3 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16800:1: ( ( rule__WaitAction__WaitTimeAssignment_3 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16801:1: ( rule__WaitAction__WaitTimeAssignment_3 )
+            {
+             before(grammarAccess.getWaitActionAccess().getWaitTimeAssignment_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16802:1: ( rule__WaitAction__WaitTimeAssignment_3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16802:2: rule__WaitAction__WaitTimeAssignment_3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__WaitAction__WaitTimeAssignment_3_in_rule__WaitAction__Group__3__Impl33394);
+            rule__WaitAction__WaitTimeAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getWaitActionAccess().getWaitTimeAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WaitAction__Group__3__Impl"
+
+
+    // $ANTLR start "rule__WaitAction__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16812:1: rule__WaitAction__Group__4 : rule__WaitAction__Group__4__Impl ;
+    public final void rule__WaitAction__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16816:1: ( rule__WaitAction__Group__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16817:2: rule__WaitAction__Group__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__WaitAction__Group__4__Impl_in_rule__WaitAction__Group__433424);
+            rule__WaitAction__Group__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WaitAction__Group__4"
+
+
+    // $ANTLR start "rule__WaitAction__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16823:1: rule__WaitAction__Group__4__Impl : ( '}' ) ;
+    public final void rule__WaitAction__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16827:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16828:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16828:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16829:1: '}'
+            {
+             before(grammarAccess.getWaitActionAccess().getRightCurlyBracketKeyword_4()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__WaitAction__Group__4__Impl33452); 
+             after(grammarAccess.getWaitActionAccess().getRightCurlyBracketKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WaitAction__Group__4__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16853:1: rule__VirtualNode__Group__0 : rule__VirtualNode__Group__0__Impl rule__VirtualNode__Group__1 ;
+    public final void rule__VirtualNode__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16857:1: ( rule__VirtualNode__Group__0__Impl rule__VirtualNode__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16858:2: rule__VirtualNode__Group__0__Impl rule__VirtualNode__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__0__Impl_in_rule__VirtualNode__Group__033494);
+            rule__VirtualNode__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__1_in_rule__VirtualNode__Group__033497);
+            rule__VirtualNode__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__0"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16865:1: rule__VirtualNode__Group__0__Impl : ( 'VirtualNode' ) ;
+    public final void rule__VirtualNode__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16869:1: ( ( 'VirtualNode' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16870:1: ( 'VirtualNode' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16870:1: ( 'VirtualNode' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16871:1: 'VirtualNode'
+            {
+             before(grammarAccess.getVirtualNodeAccess().getVirtualNodeKeyword_0()); 
+            match(input,120,FollowSets001.FOLLOW_120_in_rule__VirtualNode__Group__0__Impl33525); 
+             after(grammarAccess.getVirtualNodeAccess().getVirtualNodeKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__0__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16884:1: rule__VirtualNode__Group__1 : rule__VirtualNode__Group__1__Impl rule__VirtualNode__Group__2 ;
+    public final void rule__VirtualNode__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16888:1: ( rule__VirtualNode__Group__1__Impl rule__VirtualNode__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16889:2: rule__VirtualNode__Group__1__Impl rule__VirtualNode__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__1__Impl_in_rule__VirtualNode__Group__133556);
+            rule__VirtualNode__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__2_in_rule__VirtualNode__Group__133559);
+            rule__VirtualNode__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__1"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16896:1: rule__VirtualNode__Group__1__Impl : ( ( rule__VirtualNode__IdAssignment_1 ) ) ;
+    public final void rule__VirtualNode__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16900:1: ( ( ( rule__VirtualNode__IdAssignment_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16901:1: ( ( rule__VirtualNode__IdAssignment_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16901:1: ( ( rule__VirtualNode__IdAssignment_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16902:1: ( rule__VirtualNode__IdAssignment_1 )
+            {
+             before(grammarAccess.getVirtualNodeAccess().getIdAssignment_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16903:1: ( rule__VirtualNode__IdAssignment_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16903:2: rule__VirtualNode__IdAssignment_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__IdAssignment_1_in_rule__VirtualNode__Group__1__Impl33586);
+            rule__VirtualNode__IdAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNodeAccess().getIdAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__1__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16913:1: rule__VirtualNode__Group__2 : rule__VirtualNode__Group__2__Impl rule__VirtualNode__Group__3 ;
+    public final void rule__VirtualNode__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16917:1: ( rule__VirtualNode__Group__2__Impl rule__VirtualNode__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16918:2: rule__VirtualNode__Group__2__Impl rule__VirtualNode__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__2__Impl_in_rule__VirtualNode__Group__233616);
+            rule__VirtualNode__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__3_in_rule__VirtualNode__Group__233619);
+            rule__VirtualNode__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__2"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16925:1: rule__VirtualNode__Group__2__Impl : ( '{' ) ;
+    public final void rule__VirtualNode__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16929:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16930:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16930:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16931:1: '{'
+            {
+             before(grammarAccess.getVirtualNodeAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__VirtualNode__Group__2__Impl33647); 
+             after(grammarAccess.getVirtualNodeAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__2__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16944:1: rule__VirtualNode__Group__3 : rule__VirtualNode__Group__3__Impl rule__VirtualNode__Group__4 ;
+    public final void rule__VirtualNode__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16948:1: ( rule__VirtualNode__Group__3__Impl rule__VirtualNode__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16949:2: rule__VirtualNode__Group__3__Impl rule__VirtualNode__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__3__Impl_in_rule__VirtualNode__Group__333678);
+            rule__VirtualNode__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__4_in_rule__VirtualNode__Group__333681);
+            rule__VirtualNode__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__3"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16956:1: rule__VirtualNode__Group__3__Impl : ( 'name' ) ;
+    public final void rule__VirtualNode__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16960:1: ( ( 'name' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16961:1: ( 'name' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16961:1: ( 'name' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16962:1: 'name'
+            {
+             before(grammarAccess.getVirtualNodeAccess().getNameKeyword_3()); 
+            match(input,65,FollowSets001.FOLLOW_65_in_rule__VirtualNode__Group__3__Impl33709); 
+             after(grammarAccess.getVirtualNodeAccess().getNameKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__3__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16975:1: rule__VirtualNode__Group__4 : rule__VirtualNode__Group__4__Impl rule__VirtualNode__Group__5 ;
+    public final void rule__VirtualNode__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16979:1: ( rule__VirtualNode__Group__4__Impl rule__VirtualNode__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16980:2: rule__VirtualNode__Group__4__Impl rule__VirtualNode__Group__5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__4__Impl_in_rule__VirtualNode__Group__433740);
+            rule__VirtualNode__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__5_in_rule__VirtualNode__Group__433743);
+            rule__VirtualNode__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__4"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16987:1: rule__VirtualNode__Group__4__Impl : ( ( rule__VirtualNode__NameAssignment_4 ) ) ;
+    public final void rule__VirtualNode__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16991:1: ( ( ( rule__VirtualNode__NameAssignment_4 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16992:1: ( ( rule__VirtualNode__NameAssignment_4 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16992:1: ( ( rule__VirtualNode__NameAssignment_4 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16993:1: ( rule__VirtualNode__NameAssignment_4 )
+            {
+             before(grammarAccess.getVirtualNodeAccess().getNameAssignment_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16994:1: ( rule__VirtualNode__NameAssignment_4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:16994:2: rule__VirtualNode__NameAssignment_4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__NameAssignment_4_in_rule__VirtualNode__Group__4__Impl33770);
+            rule__VirtualNode__NameAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNodeAccess().getNameAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__4__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17004:1: rule__VirtualNode__Group__5 : rule__VirtualNode__Group__5__Impl rule__VirtualNode__Group__6 ;
+    public final void rule__VirtualNode__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17008:1: ( rule__VirtualNode__Group__5__Impl rule__VirtualNode__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17009:2: rule__VirtualNode__Group__5__Impl rule__VirtualNode__Group__6
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__5__Impl_in_rule__VirtualNode__Group__533800);
+            rule__VirtualNode__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__6_in_rule__VirtualNode__Group__533803);
+            rule__VirtualNode__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__5"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17016:1: rule__VirtualNode__Group__5__Impl : ( ( rule__VirtualNode__Group_5__0 )? ) ;
+    public final void rule__VirtualNode__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17020:1: ( ( ( rule__VirtualNode__Group_5__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17021:1: ( ( rule__VirtualNode__Group_5__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17021:1: ( ( rule__VirtualNode__Group_5__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17022:1: ( rule__VirtualNode__Group_5__0 )?
+            {
+             before(grammarAccess.getVirtualNodeAccess().getGroup_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17023:1: ( rule__VirtualNode__Group_5__0 )?
+            int alt80=2;
+            int LA80_0 = input.LA(1);
+
+            if ( (LA80_0==67) ) {
+                alt80=1;
+            }
+            switch (alt80) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17023:2: rule__VirtualNode__Group_5__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_5__0_in_rule__VirtualNode__Group__5__Impl33830);
+                    rule__VirtualNode__Group_5__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getVirtualNodeAccess().getGroup_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__5__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17033:1: rule__VirtualNode__Group__6 : rule__VirtualNode__Group__6__Impl rule__VirtualNode__Group__7 ;
+    public final void rule__VirtualNode__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17037:1: ( rule__VirtualNode__Group__6__Impl rule__VirtualNode__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17038:2: rule__VirtualNode__Group__6__Impl rule__VirtualNode__Group__7
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__6__Impl_in_rule__VirtualNode__Group__633861);
+            rule__VirtualNode__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__7_in_rule__VirtualNode__Group__633864);
+            rule__VirtualNode__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__6"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17045:1: rule__VirtualNode__Group__6__Impl : ( ( rule__VirtualNode__Group_6__0 )? ) ;
+    public final void rule__VirtualNode__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17049:1: ( ( ( rule__VirtualNode__Group_6__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17050:1: ( ( rule__VirtualNode__Group_6__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17050:1: ( ( rule__VirtualNode__Group_6__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17051:1: ( rule__VirtualNode__Group_6__0 )?
+            {
+             before(grammarAccess.getVirtualNodeAccess().getGroup_6()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17052:1: ( rule__VirtualNode__Group_6__0 )?
+            int alt81=2;
+            int LA81_0 = input.LA(1);
+
+            if ( (LA81_0==55) ) {
+                alt81=1;
+            }
+            switch (alt81) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17052:2: rule__VirtualNode__Group_6__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_6__0_in_rule__VirtualNode__Group__6__Impl33891);
+                    rule__VirtualNode__Group_6__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getVirtualNodeAccess().getGroup_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__6__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17062:1: rule__VirtualNode__Group__7 : rule__VirtualNode__Group__7__Impl rule__VirtualNode__Group__8 ;
+    public final void rule__VirtualNode__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17066:1: ( rule__VirtualNode__Group__7__Impl rule__VirtualNode__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17067:2: rule__VirtualNode__Group__7__Impl rule__VirtualNode__Group__8
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__7__Impl_in_rule__VirtualNode__Group__733922);
+            rule__VirtualNode__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__8_in_rule__VirtualNode__Group__733925);
+            rule__VirtualNode__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__7"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17074:1: rule__VirtualNode__Group__7__Impl : ( 'hostedOn' ) ;
+    public final void rule__VirtualNode__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17078:1: ( ( 'hostedOn' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17079:1: ( 'hostedOn' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17079:1: ( 'hostedOn' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17080:1: 'hostedOn'
+            {
+             before(grammarAccess.getVirtualNodeAccess().getHostedOnKeyword_7()); 
+            match(input,121,FollowSets001.FOLLOW_121_in_rule__VirtualNode__Group__7__Impl33953); 
+             after(grammarAccess.getVirtualNodeAccess().getHostedOnKeyword_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__7__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17093:1: rule__VirtualNode__Group__8 : rule__VirtualNode__Group__8__Impl rule__VirtualNode__Group__9 ;
+    public final void rule__VirtualNode__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17097:1: ( rule__VirtualNode__Group__8__Impl rule__VirtualNode__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17098:2: rule__VirtualNode__Group__8__Impl rule__VirtualNode__Group__9
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__8__Impl_in_rule__VirtualNode__Group__833984);
+            rule__VirtualNode__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__9_in_rule__VirtualNode__Group__833987);
+            rule__VirtualNode__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__8"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17105:1: rule__VirtualNode__Group__8__Impl : ( ( rule__VirtualNode__HostedOnAssignment_8 ) ) ;
+    public final void rule__VirtualNode__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17109:1: ( ( ( rule__VirtualNode__HostedOnAssignment_8 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17110:1: ( ( rule__VirtualNode__HostedOnAssignment_8 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17110:1: ( ( rule__VirtualNode__HostedOnAssignment_8 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17111:1: ( rule__VirtualNode__HostedOnAssignment_8 )
+            {
+             before(grammarAccess.getVirtualNodeAccess().getHostedOnAssignment_8()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17112:1: ( rule__VirtualNode__HostedOnAssignment_8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17112:2: rule__VirtualNode__HostedOnAssignment_8
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__HostedOnAssignment_8_in_rule__VirtualNode__Group__8__Impl34014);
+            rule__VirtualNode__HostedOnAssignment_8();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNodeAccess().getHostedOnAssignment_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__8__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17122:1: rule__VirtualNode__Group__9 : rule__VirtualNode__Group__9__Impl rule__VirtualNode__Group__10 ;
+    public final void rule__VirtualNode__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17126:1: ( rule__VirtualNode__Group__9__Impl rule__VirtualNode__Group__10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17127:2: rule__VirtualNode__Group__9__Impl rule__VirtualNode__Group__10
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__9__Impl_in_rule__VirtualNode__Group__934044);
+            rule__VirtualNode__Group__9__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__10_in_rule__VirtualNode__Group__934047);
+            rule__VirtualNode__Group__10();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__9"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17134:1: rule__VirtualNode__Group__9__Impl : ( 'performance' ) ;
+    public final void rule__VirtualNode__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17138:1: ( ( 'performance' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17139:1: ( 'performance' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17139:1: ( 'performance' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17140:1: 'performance'
+            {
+             before(grammarAccess.getVirtualNodeAccess().getPerformanceKeyword_9()); 
+            match(input,122,FollowSets001.FOLLOW_122_in_rule__VirtualNode__Group__9__Impl34075); 
+             after(grammarAccess.getVirtualNodeAccess().getPerformanceKeyword_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__9__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17153:1: rule__VirtualNode__Group__10 : rule__VirtualNode__Group__10__Impl rule__VirtualNode__Group__11 ;
+    public final void rule__VirtualNode__Group__10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17157:1: ( rule__VirtualNode__Group__10__Impl rule__VirtualNode__Group__11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17158:2: rule__VirtualNode__Group__10__Impl rule__VirtualNode__Group__11
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__10__Impl_in_rule__VirtualNode__Group__1034106);
+            rule__VirtualNode__Group__10__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__11_in_rule__VirtualNode__Group__1034109);
+            rule__VirtualNode__Group__11();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__10"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__10__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17165:1: rule__VirtualNode__Group__10__Impl : ( ( rule__VirtualNode__PerformanceAssignment_10 ) ) ;
+    public final void rule__VirtualNode__Group__10__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17169:1: ( ( ( rule__VirtualNode__PerformanceAssignment_10 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17170:1: ( ( rule__VirtualNode__PerformanceAssignment_10 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17170:1: ( ( rule__VirtualNode__PerformanceAssignment_10 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17171:1: ( rule__VirtualNode__PerformanceAssignment_10 )
+            {
+             before(grammarAccess.getVirtualNodeAccess().getPerformanceAssignment_10()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17172:1: ( rule__VirtualNode__PerformanceAssignment_10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17172:2: rule__VirtualNode__PerformanceAssignment_10
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__PerformanceAssignment_10_in_rule__VirtualNode__Group__10__Impl34136);
+            rule__VirtualNode__PerformanceAssignment_10();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNodeAccess().getPerformanceAssignment_10()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__10__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17182:1: rule__VirtualNode__Group__11 : rule__VirtualNode__Group__11__Impl rule__VirtualNode__Group__12 ;
+    public final void rule__VirtualNode__Group__11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17186:1: ( rule__VirtualNode__Group__11__Impl rule__VirtualNode__Group__12 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17187:2: rule__VirtualNode__Group__11__Impl rule__VirtualNode__Group__12
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__11__Impl_in_rule__VirtualNode__Group__1134166);
+            rule__VirtualNode__Group__11__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__12_in_rule__VirtualNode__Group__1134169);
+            rule__VirtualNode__Group__12();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__11"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__11__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17194:1: rule__VirtualNode__Group__11__Impl : ( ( rule__VirtualNode__Group_11__0 )? ) ;
+    public final void rule__VirtualNode__Group__11__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17198:1: ( ( ( rule__VirtualNode__Group_11__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17199:1: ( ( rule__VirtualNode__Group_11__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17199:1: ( ( rule__VirtualNode__Group_11__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17200:1: ( rule__VirtualNode__Group_11__0 )?
+            {
+             before(grammarAccess.getVirtualNodeAccess().getGroup_11()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17201:1: ( rule__VirtualNode__Group_11__0 )?
+            int alt82=2;
+            int LA82_0 = input.LA(1);
+
+            if ( (LA82_0==125) ) {
+                alt82=1;
+            }
+            switch (alt82) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17201:2: rule__VirtualNode__Group_11__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_11__0_in_rule__VirtualNode__Group__11__Impl34196);
+                    rule__VirtualNode__Group_11__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getVirtualNodeAccess().getGroup_11()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__11__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__12"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17211:1: rule__VirtualNode__Group__12 : rule__VirtualNode__Group__12__Impl ;
+    public final void rule__VirtualNode__Group__12() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17215:1: ( rule__VirtualNode__Group__12__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17216:2: rule__VirtualNode__Group__12__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group__12__Impl_in_rule__VirtualNode__Group__1234227);
+            rule__VirtualNode__Group__12__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__12"
+
+
+    // $ANTLR start "rule__VirtualNode__Group__12__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17222:1: rule__VirtualNode__Group__12__Impl : ( '}' ) ;
+    public final void rule__VirtualNode__Group__12__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17226:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17227:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17227:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17228:1: '}'
+            {
+             before(grammarAccess.getVirtualNodeAccess().getRightCurlyBracketKeyword_12()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__VirtualNode__Group__12__Impl34255); 
+             after(grammarAccess.getVirtualNodeAccess().getRightCurlyBracketKeyword_12()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group__12__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_5__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17267:1: rule__VirtualNode__Group_5__0 : rule__VirtualNode__Group_5__0__Impl rule__VirtualNode__Group_5__1 ;
+    public final void rule__VirtualNode__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17271:1: ( rule__VirtualNode__Group_5__0__Impl rule__VirtualNode__Group_5__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17272:2: rule__VirtualNode__Group_5__0__Impl rule__VirtualNode__Group_5__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_5__0__Impl_in_rule__VirtualNode__Group_5__034312);
+            rule__VirtualNode__Group_5__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_5__1_in_rule__VirtualNode__Group_5__034315);
+            rule__VirtualNode__Group_5__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_5__0"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_5__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17279:1: rule__VirtualNode__Group_5__0__Impl : ( 'alternativeNames' ) ;
+    public final void rule__VirtualNode__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17283:1: ( ( 'alternativeNames' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17284:1: ( 'alternativeNames' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17284:1: ( 'alternativeNames' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17285:1: 'alternativeNames'
+            {
+             before(grammarAccess.getVirtualNodeAccess().getAlternativeNamesKeyword_5_0()); 
+            match(input,67,FollowSets001.FOLLOW_67_in_rule__VirtualNode__Group_5__0__Impl34343); 
+             after(grammarAccess.getVirtualNodeAccess().getAlternativeNamesKeyword_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_5__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17298:1: rule__VirtualNode__Group_5__1 : rule__VirtualNode__Group_5__1__Impl rule__VirtualNode__Group_5__2 ;
+    public final void rule__VirtualNode__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17302:1: ( rule__VirtualNode__Group_5__1__Impl rule__VirtualNode__Group_5__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17303:2: rule__VirtualNode__Group_5__1__Impl rule__VirtualNode__Group_5__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_5__1__Impl_in_rule__VirtualNode__Group_5__134374);
+            rule__VirtualNode__Group_5__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_5__2_in_rule__VirtualNode__Group_5__134377);
+            rule__VirtualNode__Group_5__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_5__1"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_5__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17310:1: rule__VirtualNode__Group_5__1__Impl : ( '{' ) ;
+    public final void rule__VirtualNode__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17314:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17315:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17315:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17316:1: '{'
+            {
+             before(grammarAccess.getVirtualNodeAccess().getLeftCurlyBracketKeyword_5_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__VirtualNode__Group_5__1__Impl34405); 
+             after(grammarAccess.getVirtualNodeAccess().getLeftCurlyBracketKeyword_5_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_5__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17329:1: rule__VirtualNode__Group_5__2 : rule__VirtualNode__Group_5__2__Impl rule__VirtualNode__Group_5__3 ;
+    public final void rule__VirtualNode__Group_5__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17333:1: ( rule__VirtualNode__Group_5__2__Impl rule__VirtualNode__Group_5__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17334:2: rule__VirtualNode__Group_5__2__Impl rule__VirtualNode__Group_5__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_5__2__Impl_in_rule__VirtualNode__Group_5__234436);
+            rule__VirtualNode__Group_5__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_5__3_in_rule__VirtualNode__Group_5__234439);
+            rule__VirtualNode__Group_5__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_5__2"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_5__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17341:1: rule__VirtualNode__Group_5__2__Impl : ( ( rule__VirtualNode__AlternativeNamesAssignment_5_2 ) ) ;
+    public final void rule__VirtualNode__Group_5__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17345:1: ( ( ( rule__VirtualNode__AlternativeNamesAssignment_5_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17346:1: ( ( rule__VirtualNode__AlternativeNamesAssignment_5_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17346:1: ( ( rule__VirtualNode__AlternativeNamesAssignment_5_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17347:1: ( rule__VirtualNode__AlternativeNamesAssignment_5_2 )
+            {
+             before(grammarAccess.getVirtualNodeAccess().getAlternativeNamesAssignment_5_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17348:1: ( rule__VirtualNode__AlternativeNamesAssignment_5_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17348:2: rule__VirtualNode__AlternativeNamesAssignment_5_2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__AlternativeNamesAssignment_5_2_in_rule__VirtualNode__Group_5__2__Impl34466);
+            rule__VirtualNode__AlternativeNamesAssignment_5_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNodeAccess().getAlternativeNamesAssignment_5_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_5__2__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_5__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17358:1: rule__VirtualNode__Group_5__3 : rule__VirtualNode__Group_5__3__Impl rule__VirtualNode__Group_5__4 ;
+    public final void rule__VirtualNode__Group_5__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17362:1: ( rule__VirtualNode__Group_5__3__Impl rule__VirtualNode__Group_5__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17363:2: rule__VirtualNode__Group_5__3__Impl rule__VirtualNode__Group_5__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_5__3__Impl_in_rule__VirtualNode__Group_5__334496);
+            rule__VirtualNode__Group_5__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_5__4_in_rule__VirtualNode__Group_5__334499);
+            rule__VirtualNode__Group_5__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_5__3"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_5__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17370:1: rule__VirtualNode__Group_5__3__Impl : ( ( rule__VirtualNode__Group_5_3__0 )* ) ;
+    public final void rule__VirtualNode__Group_5__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17374:1: ( ( ( rule__VirtualNode__Group_5_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17375:1: ( ( rule__VirtualNode__Group_5_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17375:1: ( ( rule__VirtualNode__Group_5_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17376:1: ( rule__VirtualNode__Group_5_3__0 )*
+            {
+             before(grammarAccess.getVirtualNodeAccess().getGroup_5_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17377:1: ( rule__VirtualNode__Group_5_3__0 )*
+            loop83:
+            do {
+                int alt83=2;
+                int LA83_0 = input.LA(1);
+
+                if ( (LA83_0==31) ) {
+                    alt83=1;
+                }
+
+
+                switch (alt83) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17377:2: rule__VirtualNode__Group_5_3__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_5_3__0_in_rule__VirtualNode__Group_5__3__Impl34526);
+            	    rule__VirtualNode__Group_5_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop83;
+                }
+            } while (true);
+
+             after(grammarAccess.getVirtualNodeAccess().getGroup_5_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_5__3__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_5__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17387:1: rule__VirtualNode__Group_5__4 : rule__VirtualNode__Group_5__4__Impl ;
+    public final void rule__VirtualNode__Group_5__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17391:1: ( rule__VirtualNode__Group_5__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17392:2: rule__VirtualNode__Group_5__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_5__4__Impl_in_rule__VirtualNode__Group_5__434557);
+            rule__VirtualNode__Group_5__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_5__4"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_5__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17398:1: rule__VirtualNode__Group_5__4__Impl : ( '}' ) ;
+    public final void rule__VirtualNode__Group_5__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17402:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17403:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17403:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17404:1: '}'
+            {
+             before(grammarAccess.getVirtualNodeAccess().getRightCurlyBracketKeyword_5_4()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__VirtualNode__Group_5__4__Impl34585); 
+             after(grammarAccess.getVirtualNodeAccess().getRightCurlyBracketKeyword_5_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_5__4__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_5_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17427:1: rule__VirtualNode__Group_5_3__0 : rule__VirtualNode__Group_5_3__0__Impl rule__VirtualNode__Group_5_3__1 ;
+    public final void rule__VirtualNode__Group_5_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17431:1: ( rule__VirtualNode__Group_5_3__0__Impl rule__VirtualNode__Group_5_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17432:2: rule__VirtualNode__Group_5_3__0__Impl rule__VirtualNode__Group_5_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_5_3__0__Impl_in_rule__VirtualNode__Group_5_3__034626);
+            rule__VirtualNode__Group_5_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_5_3__1_in_rule__VirtualNode__Group_5_3__034629);
+            rule__VirtualNode__Group_5_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_5_3__0"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_5_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17439:1: rule__VirtualNode__Group_5_3__0__Impl : ( ',' ) ;
+    public final void rule__VirtualNode__Group_5_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17443:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17444:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17444:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17445:1: ','
+            {
+             before(grammarAccess.getVirtualNodeAccess().getCommaKeyword_5_3_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__VirtualNode__Group_5_3__0__Impl34657); 
+             after(grammarAccess.getVirtualNodeAccess().getCommaKeyword_5_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_5_3__0__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_5_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17458:1: rule__VirtualNode__Group_5_3__1 : rule__VirtualNode__Group_5_3__1__Impl ;
+    public final void rule__VirtualNode__Group_5_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17462:1: ( rule__VirtualNode__Group_5_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17463:2: rule__VirtualNode__Group_5_3__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_5_3__1__Impl_in_rule__VirtualNode__Group_5_3__134688);
+            rule__VirtualNode__Group_5_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_5_3__1"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_5_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17469:1: rule__VirtualNode__Group_5_3__1__Impl : ( ( rule__VirtualNode__AlternativeNamesAssignment_5_3_1 ) ) ;
+    public final void rule__VirtualNode__Group_5_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17473:1: ( ( ( rule__VirtualNode__AlternativeNamesAssignment_5_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17474:1: ( ( rule__VirtualNode__AlternativeNamesAssignment_5_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17474:1: ( ( rule__VirtualNode__AlternativeNamesAssignment_5_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17475:1: ( rule__VirtualNode__AlternativeNamesAssignment_5_3_1 )
+            {
+             before(grammarAccess.getVirtualNodeAccess().getAlternativeNamesAssignment_5_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17476:1: ( rule__VirtualNode__AlternativeNamesAssignment_5_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17476:2: rule__VirtualNode__AlternativeNamesAssignment_5_3_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__AlternativeNamesAssignment_5_3_1_in_rule__VirtualNode__Group_5_3__1__Impl34715);
+            rule__VirtualNode__AlternativeNamesAssignment_5_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNodeAccess().getAlternativeNamesAssignment_5_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_5_3__1__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_6__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17490:1: rule__VirtualNode__Group_6__0 : rule__VirtualNode__Group_6__0__Impl rule__VirtualNode__Group_6__1 ;
+    public final void rule__VirtualNode__Group_6__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17494:1: ( rule__VirtualNode__Group_6__0__Impl rule__VirtualNode__Group_6__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17495:2: rule__VirtualNode__Group_6__0__Impl rule__VirtualNode__Group_6__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_6__0__Impl_in_rule__VirtualNode__Group_6__034749);
+            rule__VirtualNode__Group_6__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_6__1_in_rule__VirtualNode__Group_6__034752);
+            rule__VirtualNode__Group_6__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_6__0"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_6__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17502:1: rule__VirtualNode__Group_6__0__Impl : ( 'software' ) ;
+    public final void rule__VirtualNode__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17506:1: ( ( 'software' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17507:1: ( 'software' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17507:1: ( 'software' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17508:1: 'software'
+            {
+             before(grammarAccess.getVirtualNodeAccess().getSoftwareKeyword_6_0()); 
+            match(input,55,FollowSets001.FOLLOW_55_in_rule__VirtualNode__Group_6__0__Impl34780); 
+             after(grammarAccess.getVirtualNodeAccess().getSoftwareKeyword_6_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_6__0__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_6__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17521:1: rule__VirtualNode__Group_6__1 : rule__VirtualNode__Group_6__1__Impl rule__VirtualNode__Group_6__2 ;
+    public final void rule__VirtualNode__Group_6__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17525:1: ( rule__VirtualNode__Group_6__1__Impl rule__VirtualNode__Group_6__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17526:2: rule__VirtualNode__Group_6__1__Impl rule__VirtualNode__Group_6__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_6__1__Impl_in_rule__VirtualNode__Group_6__134811);
+            rule__VirtualNode__Group_6__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_6__2_in_rule__VirtualNode__Group_6__134814);
+            rule__VirtualNode__Group_6__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_6__1"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_6__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17533:1: rule__VirtualNode__Group_6__1__Impl : ( '(' ) ;
+    public final void rule__VirtualNode__Group_6__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17537:1: ( ( '(' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17538:1: ( '(' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17538:1: ( '(' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17539:1: '('
+            {
+             before(grammarAccess.getVirtualNodeAccess().getLeftParenthesisKeyword_6_1()); 
+            match(input,123,FollowSets001.FOLLOW_123_in_rule__VirtualNode__Group_6__1__Impl34842); 
+             after(grammarAccess.getVirtualNodeAccess().getLeftParenthesisKeyword_6_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_6__1__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_6__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17552:1: rule__VirtualNode__Group_6__2 : rule__VirtualNode__Group_6__2__Impl rule__VirtualNode__Group_6__3 ;
+    public final void rule__VirtualNode__Group_6__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17556:1: ( rule__VirtualNode__Group_6__2__Impl rule__VirtualNode__Group_6__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17557:2: rule__VirtualNode__Group_6__2__Impl rule__VirtualNode__Group_6__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_6__2__Impl_in_rule__VirtualNode__Group_6__234873);
+            rule__VirtualNode__Group_6__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_6__3_in_rule__VirtualNode__Group_6__234876);
+            rule__VirtualNode__Group_6__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_6__2"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_6__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17564:1: rule__VirtualNode__Group_6__2__Impl : ( ( rule__VirtualNode__SoftwareAssignment_6_2 ) ) ;
+    public final void rule__VirtualNode__Group_6__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17568:1: ( ( ( rule__VirtualNode__SoftwareAssignment_6_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17569:1: ( ( rule__VirtualNode__SoftwareAssignment_6_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17569:1: ( ( rule__VirtualNode__SoftwareAssignment_6_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17570:1: ( rule__VirtualNode__SoftwareAssignment_6_2 )
+            {
+             before(grammarAccess.getVirtualNodeAccess().getSoftwareAssignment_6_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17571:1: ( rule__VirtualNode__SoftwareAssignment_6_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17571:2: rule__VirtualNode__SoftwareAssignment_6_2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__SoftwareAssignment_6_2_in_rule__VirtualNode__Group_6__2__Impl34903);
+            rule__VirtualNode__SoftwareAssignment_6_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNodeAccess().getSoftwareAssignment_6_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_6__2__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_6__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17581:1: rule__VirtualNode__Group_6__3 : rule__VirtualNode__Group_6__3__Impl rule__VirtualNode__Group_6__4 ;
+    public final void rule__VirtualNode__Group_6__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17585:1: ( rule__VirtualNode__Group_6__3__Impl rule__VirtualNode__Group_6__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17586:2: rule__VirtualNode__Group_6__3__Impl rule__VirtualNode__Group_6__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_6__3__Impl_in_rule__VirtualNode__Group_6__334933);
+            rule__VirtualNode__Group_6__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_6__4_in_rule__VirtualNode__Group_6__334936);
+            rule__VirtualNode__Group_6__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_6__3"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_6__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17593:1: rule__VirtualNode__Group_6__3__Impl : ( ( rule__VirtualNode__Group_6_3__0 )* ) ;
+    public final void rule__VirtualNode__Group_6__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17597:1: ( ( ( rule__VirtualNode__Group_6_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17598:1: ( ( rule__VirtualNode__Group_6_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17598:1: ( ( rule__VirtualNode__Group_6_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17599:1: ( rule__VirtualNode__Group_6_3__0 )*
+            {
+             before(grammarAccess.getVirtualNodeAccess().getGroup_6_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17600:1: ( rule__VirtualNode__Group_6_3__0 )*
+            loop84:
+            do {
+                int alt84=2;
+                int LA84_0 = input.LA(1);
+
+                if ( (LA84_0==31) ) {
+                    alt84=1;
+                }
+
+
+                switch (alt84) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17600:2: rule__VirtualNode__Group_6_3__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_6_3__0_in_rule__VirtualNode__Group_6__3__Impl34963);
+            	    rule__VirtualNode__Group_6_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop84;
+                }
+            } while (true);
+
+             after(grammarAccess.getVirtualNodeAccess().getGroup_6_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_6__3__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_6__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17610:1: rule__VirtualNode__Group_6__4 : rule__VirtualNode__Group_6__4__Impl ;
+    public final void rule__VirtualNode__Group_6__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17614:1: ( rule__VirtualNode__Group_6__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17615:2: rule__VirtualNode__Group_6__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_6__4__Impl_in_rule__VirtualNode__Group_6__434994);
+            rule__VirtualNode__Group_6__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_6__4"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_6__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17621:1: rule__VirtualNode__Group_6__4__Impl : ( ')' ) ;
+    public final void rule__VirtualNode__Group_6__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17625:1: ( ( ')' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17626:1: ( ')' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17626:1: ( ')' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17627:1: ')'
+            {
+             before(grammarAccess.getVirtualNodeAccess().getRightParenthesisKeyword_6_4()); 
+            match(input,124,FollowSets001.FOLLOW_124_in_rule__VirtualNode__Group_6__4__Impl35022); 
+             after(grammarAccess.getVirtualNodeAccess().getRightParenthesisKeyword_6_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_6__4__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_6_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17650:1: rule__VirtualNode__Group_6_3__0 : rule__VirtualNode__Group_6_3__0__Impl rule__VirtualNode__Group_6_3__1 ;
+    public final void rule__VirtualNode__Group_6_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17654:1: ( rule__VirtualNode__Group_6_3__0__Impl rule__VirtualNode__Group_6_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17655:2: rule__VirtualNode__Group_6_3__0__Impl rule__VirtualNode__Group_6_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_6_3__0__Impl_in_rule__VirtualNode__Group_6_3__035063);
+            rule__VirtualNode__Group_6_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_6_3__1_in_rule__VirtualNode__Group_6_3__035066);
+            rule__VirtualNode__Group_6_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_6_3__0"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_6_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17662:1: rule__VirtualNode__Group_6_3__0__Impl : ( ',' ) ;
+    public final void rule__VirtualNode__Group_6_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17666:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17667:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17667:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17668:1: ','
+            {
+             before(grammarAccess.getVirtualNodeAccess().getCommaKeyword_6_3_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__VirtualNode__Group_6_3__0__Impl35094); 
+             after(grammarAccess.getVirtualNodeAccess().getCommaKeyword_6_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_6_3__0__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_6_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17681:1: rule__VirtualNode__Group_6_3__1 : rule__VirtualNode__Group_6_3__1__Impl ;
+    public final void rule__VirtualNode__Group_6_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17685:1: ( rule__VirtualNode__Group_6_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17686:2: rule__VirtualNode__Group_6_3__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_6_3__1__Impl_in_rule__VirtualNode__Group_6_3__135125);
+            rule__VirtualNode__Group_6_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_6_3__1"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_6_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17692:1: rule__VirtualNode__Group_6_3__1__Impl : ( ( rule__VirtualNode__SoftwareAssignment_6_3_1 ) ) ;
+    public final void rule__VirtualNode__Group_6_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17696:1: ( ( ( rule__VirtualNode__SoftwareAssignment_6_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17697:1: ( ( rule__VirtualNode__SoftwareAssignment_6_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17697:1: ( ( rule__VirtualNode__SoftwareAssignment_6_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17698:1: ( rule__VirtualNode__SoftwareAssignment_6_3_1 )
+            {
+             before(grammarAccess.getVirtualNodeAccess().getSoftwareAssignment_6_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17699:1: ( rule__VirtualNode__SoftwareAssignment_6_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17699:2: rule__VirtualNode__SoftwareAssignment_6_3_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__SoftwareAssignment_6_3_1_in_rule__VirtualNode__Group_6_3__1__Impl35152);
+            rule__VirtualNode__SoftwareAssignment_6_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNodeAccess().getSoftwareAssignment_6_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_6_3__1__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_11__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17713:1: rule__VirtualNode__Group_11__0 : rule__VirtualNode__Group_11__0__Impl rule__VirtualNode__Group_11__1 ;
+    public final void rule__VirtualNode__Group_11__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17717:1: ( rule__VirtualNode__Group_11__0__Impl rule__VirtualNode__Group_11__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17718:2: rule__VirtualNode__Group_11__0__Impl rule__VirtualNode__Group_11__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_11__0__Impl_in_rule__VirtualNode__Group_11__035186);
+            rule__VirtualNode__Group_11__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_11__1_in_rule__VirtualNode__Group_11__035189);
+            rule__VirtualNode__Group_11__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_11__0"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_11__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17725:1: rule__VirtualNode__Group_11__0__Impl : ( 'interfaces' ) ;
+    public final void rule__VirtualNode__Group_11__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17729:1: ( ( 'interfaces' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17730:1: ( 'interfaces' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17730:1: ( 'interfaces' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17731:1: 'interfaces'
+            {
+             before(grammarAccess.getVirtualNodeAccess().getInterfacesKeyword_11_0()); 
+            match(input,125,FollowSets001.FOLLOW_125_in_rule__VirtualNode__Group_11__0__Impl35217); 
+             after(grammarAccess.getVirtualNodeAccess().getInterfacesKeyword_11_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_11__0__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_11__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17744:1: rule__VirtualNode__Group_11__1 : rule__VirtualNode__Group_11__1__Impl rule__VirtualNode__Group_11__2 ;
+    public final void rule__VirtualNode__Group_11__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17748:1: ( rule__VirtualNode__Group_11__1__Impl rule__VirtualNode__Group_11__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17749:2: rule__VirtualNode__Group_11__1__Impl rule__VirtualNode__Group_11__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_11__1__Impl_in_rule__VirtualNode__Group_11__135248);
+            rule__VirtualNode__Group_11__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_11__2_in_rule__VirtualNode__Group_11__135251);
+            rule__VirtualNode__Group_11__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_11__1"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_11__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17756:1: rule__VirtualNode__Group_11__1__Impl : ( '{' ) ;
+    public final void rule__VirtualNode__Group_11__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17760:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17761:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17761:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17762:1: '{'
+            {
+             before(grammarAccess.getVirtualNodeAccess().getLeftCurlyBracketKeyword_11_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__VirtualNode__Group_11__1__Impl35279); 
+             after(grammarAccess.getVirtualNodeAccess().getLeftCurlyBracketKeyword_11_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_11__1__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_11__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17775:1: rule__VirtualNode__Group_11__2 : rule__VirtualNode__Group_11__2__Impl rule__VirtualNode__Group_11__3 ;
+    public final void rule__VirtualNode__Group_11__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17779:1: ( rule__VirtualNode__Group_11__2__Impl rule__VirtualNode__Group_11__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17780:2: rule__VirtualNode__Group_11__2__Impl rule__VirtualNode__Group_11__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_11__2__Impl_in_rule__VirtualNode__Group_11__235310);
+            rule__VirtualNode__Group_11__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_11__3_in_rule__VirtualNode__Group_11__235313);
+            rule__VirtualNode__Group_11__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_11__2"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_11__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17787:1: rule__VirtualNode__Group_11__2__Impl : ( ( rule__VirtualNode__InterfacesAssignment_11_2 ) ) ;
+    public final void rule__VirtualNode__Group_11__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17791:1: ( ( ( rule__VirtualNode__InterfacesAssignment_11_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17792:1: ( ( rule__VirtualNode__InterfacesAssignment_11_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17792:1: ( ( rule__VirtualNode__InterfacesAssignment_11_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17793:1: ( rule__VirtualNode__InterfacesAssignment_11_2 )
+            {
+             before(grammarAccess.getVirtualNodeAccess().getInterfacesAssignment_11_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17794:1: ( rule__VirtualNode__InterfacesAssignment_11_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17794:2: rule__VirtualNode__InterfacesAssignment_11_2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__InterfacesAssignment_11_2_in_rule__VirtualNode__Group_11__2__Impl35340);
+            rule__VirtualNode__InterfacesAssignment_11_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNodeAccess().getInterfacesAssignment_11_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_11__2__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_11__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17804:1: rule__VirtualNode__Group_11__3 : rule__VirtualNode__Group_11__3__Impl rule__VirtualNode__Group_11__4 ;
+    public final void rule__VirtualNode__Group_11__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17808:1: ( rule__VirtualNode__Group_11__3__Impl rule__VirtualNode__Group_11__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17809:2: rule__VirtualNode__Group_11__3__Impl rule__VirtualNode__Group_11__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_11__3__Impl_in_rule__VirtualNode__Group_11__335370);
+            rule__VirtualNode__Group_11__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_11__4_in_rule__VirtualNode__Group_11__335373);
+            rule__VirtualNode__Group_11__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_11__3"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_11__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17816:1: rule__VirtualNode__Group_11__3__Impl : ( ( rule__VirtualNode__Group_11_3__0 )* ) ;
+    public final void rule__VirtualNode__Group_11__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17820:1: ( ( ( rule__VirtualNode__Group_11_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17821:1: ( ( rule__VirtualNode__Group_11_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17821:1: ( ( rule__VirtualNode__Group_11_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17822:1: ( rule__VirtualNode__Group_11_3__0 )*
+            {
+             before(grammarAccess.getVirtualNodeAccess().getGroup_11_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17823:1: ( rule__VirtualNode__Group_11_3__0 )*
+            loop85:
+            do {
+                int alt85=2;
+                int LA85_0 = input.LA(1);
+
+                if ( (LA85_0==31) ) {
+                    alt85=1;
+                }
+
+
+                switch (alt85) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17823:2: rule__VirtualNode__Group_11_3__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_11_3__0_in_rule__VirtualNode__Group_11__3__Impl35400);
+            	    rule__VirtualNode__Group_11_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop85;
+                }
+            } while (true);
+
+             after(grammarAccess.getVirtualNodeAccess().getGroup_11_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_11__3__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_11__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17833:1: rule__VirtualNode__Group_11__4 : rule__VirtualNode__Group_11__4__Impl ;
+    public final void rule__VirtualNode__Group_11__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17837:1: ( rule__VirtualNode__Group_11__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17838:2: rule__VirtualNode__Group_11__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_11__4__Impl_in_rule__VirtualNode__Group_11__435431);
+            rule__VirtualNode__Group_11__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_11__4"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_11__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17844:1: rule__VirtualNode__Group_11__4__Impl : ( '}' ) ;
+    public final void rule__VirtualNode__Group_11__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17848:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17849:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17849:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17850:1: '}'
+            {
+             before(grammarAccess.getVirtualNodeAccess().getRightCurlyBracketKeyword_11_4()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__VirtualNode__Group_11__4__Impl35459); 
+             after(grammarAccess.getVirtualNodeAccess().getRightCurlyBracketKeyword_11_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_11__4__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_11_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17873:1: rule__VirtualNode__Group_11_3__0 : rule__VirtualNode__Group_11_3__0__Impl rule__VirtualNode__Group_11_3__1 ;
+    public final void rule__VirtualNode__Group_11_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17877:1: ( rule__VirtualNode__Group_11_3__0__Impl rule__VirtualNode__Group_11_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17878:2: rule__VirtualNode__Group_11_3__0__Impl rule__VirtualNode__Group_11_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_11_3__0__Impl_in_rule__VirtualNode__Group_11_3__035500);
+            rule__VirtualNode__Group_11_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_11_3__1_in_rule__VirtualNode__Group_11_3__035503);
+            rule__VirtualNode__Group_11_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_11_3__0"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_11_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17885:1: rule__VirtualNode__Group_11_3__0__Impl : ( ',' ) ;
+    public final void rule__VirtualNode__Group_11_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17889:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17890:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17890:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17891:1: ','
+            {
+             before(grammarAccess.getVirtualNodeAccess().getCommaKeyword_11_3_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__VirtualNode__Group_11_3__0__Impl35531); 
+             after(grammarAccess.getVirtualNodeAccess().getCommaKeyword_11_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_11_3__0__Impl"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_11_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17904:1: rule__VirtualNode__Group_11_3__1 : rule__VirtualNode__Group_11_3__1__Impl ;
+    public final void rule__VirtualNode__Group_11_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17908:1: ( rule__VirtualNode__Group_11_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17909:2: rule__VirtualNode__Group_11_3__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__Group_11_3__1__Impl_in_rule__VirtualNode__Group_11_3__135562);
+            rule__VirtualNode__Group_11_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_11_3__1"
+
+
+    // $ANTLR start "rule__VirtualNode__Group_11_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17915:1: rule__VirtualNode__Group_11_3__1__Impl : ( ( rule__VirtualNode__InterfacesAssignment_11_3_1 ) ) ;
+    public final void rule__VirtualNode__Group_11_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17919:1: ( ( ( rule__VirtualNode__InterfacesAssignment_11_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17920:1: ( ( rule__VirtualNode__InterfacesAssignment_11_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17920:1: ( ( rule__VirtualNode__InterfacesAssignment_11_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17921:1: ( rule__VirtualNode__InterfacesAssignment_11_3_1 )
+            {
+             before(grammarAccess.getVirtualNodeAccess().getInterfacesAssignment_11_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17922:1: ( rule__VirtualNode__InterfacesAssignment_11_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17922:2: rule__VirtualNode__InterfacesAssignment_11_3_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualNode__InterfacesAssignment_11_3_1_in_rule__VirtualNode__Group_11_3__1__Impl35589);
+            rule__VirtualNode__InterfacesAssignment_11_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNodeAccess().getInterfacesAssignment_11_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__Group_11_3__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17936:1: rule__PhysicalNode__Group__0 : rule__PhysicalNode__Group__0__Impl rule__PhysicalNode__Group__1 ;
+    public final void rule__PhysicalNode__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17940:1: ( rule__PhysicalNode__Group__0__Impl rule__PhysicalNode__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17941:2: rule__PhysicalNode__Group__0__Impl rule__PhysicalNode__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__0__Impl_in_rule__PhysicalNode__Group__035623);
+            rule__PhysicalNode__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__1_in_rule__PhysicalNode__Group__035626);
+            rule__PhysicalNode__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__0"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17948:1: rule__PhysicalNode__Group__0__Impl : ( 'PhysicalNode' ) ;
+    public final void rule__PhysicalNode__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17952:1: ( ( 'PhysicalNode' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17953:1: ( 'PhysicalNode' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17953:1: ( 'PhysicalNode' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17954:1: 'PhysicalNode'
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getPhysicalNodeKeyword_0()); 
+            match(input,126,FollowSets001.FOLLOW_126_in_rule__PhysicalNode__Group__0__Impl35654); 
+             after(grammarAccess.getPhysicalNodeAccess().getPhysicalNodeKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17967:1: rule__PhysicalNode__Group__1 : rule__PhysicalNode__Group__1__Impl rule__PhysicalNode__Group__2 ;
+    public final void rule__PhysicalNode__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17971:1: ( rule__PhysicalNode__Group__1__Impl rule__PhysicalNode__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17972:2: rule__PhysicalNode__Group__1__Impl rule__PhysicalNode__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__1__Impl_in_rule__PhysicalNode__Group__135685);
+            rule__PhysicalNode__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__2_in_rule__PhysicalNode__Group__135688);
+            rule__PhysicalNode__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__1"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17979:1: rule__PhysicalNode__Group__1__Impl : ( ( rule__PhysicalNode__IdAssignment_1 ) ) ;
+    public final void rule__PhysicalNode__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17983:1: ( ( ( rule__PhysicalNode__IdAssignment_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17984:1: ( ( rule__PhysicalNode__IdAssignment_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17984:1: ( ( rule__PhysicalNode__IdAssignment_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17985:1: ( rule__PhysicalNode__IdAssignment_1 )
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getIdAssignment_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17986:1: ( rule__PhysicalNode__IdAssignment_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17986:2: rule__PhysicalNode__IdAssignment_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__IdAssignment_1_in_rule__PhysicalNode__Group__1__Impl35715);
+            rule__PhysicalNode__IdAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getIdAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:17996:1: rule__PhysicalNode__Group__2 : rule__PhysicalNode__Group__2__Impl rule__PhysicalNode__Group__3 ;
+    public final void rule__PhysicalNode__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18000:1: ( rule__PhysicalNode__Group__2__Impl rule__PhysicalNode__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18001:2: rule__PhysicalNode__Group__2__Impl rule__PhysicalNode__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__2__Impl_in_rule__PhysicalNode__Group__235745);
+            rule__PhysicalNode__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__3_in_rule__PhysicalNode__Group__235748);
+            rule__PhysicalNode__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__2"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18008:1: rule__PhysicalNode__Group__2__Impl : ( '{' ) ;
+    public final void rule__PhysicalNode__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18012:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18013:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18013:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18014:1: '{'
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__PhysicalNode__Group__2__Impl35776); 
+             after(grammarAccess.getPhysicalNodeAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18027:1: rule__PhysicalNode__Group__3 : rule__PhysicalNode__Group__3__Impl rule__PhysicalNode__Group__4 ;
+    public final void rule__PhysicalNode__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18031:1: ( rule__PhysicalNode__Group__3__Impl rule__PhysicalNode__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18032:2: rule__PhysicalNode__Group__3__Impl rule__PhysicalNode__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__3__Impl_in_rule__PhysicalNode__Group__335807);
+            rule__PhysicalNode__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__4_in_rule__PhysicalNode__Group__335810);
+            rule__PhysicalNode__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__3"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18039:1: rule__PhysicalNode__Group__3__Impl : ( 'name' ) ;
+    public final void rule__PhysicalNode__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18043:1: ( ( 'name' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18044:1: ( 'name' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18044:1: ( 'name' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18045:1: 'name'
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getNameKeyword_3()); 
+            match(input,65,FollowSets001.FOLLOW_65_in_rule__PhysicalNode__Group__3__Impl35838); 
+             after(grammarAccess.getPhysicalNodeAccess().getNameKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__3__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18058:1: rule__PhysicalNode__Group__4 : rule__PhysicalNode__Group__4__Impl rule__PhysicalNode__Group__5 ;
+    public final void rule__PhysicalNode__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18062:1: ( rule__PhysicalNode__Group__4__Impl rule__PhysicalNode__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18063:2: rule__PhysicalNode__Group__4__Impl rule__PhysicalNode__Group__5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__4__Impl_in_rule__PhysicalNode__Group__435869);
+            rule__PhysicalNode__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__5_in_rule__PhysicalNode__Group__435872);
+            rule__PhysicalNode__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__4"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18070:1: rule__PhysicalNode__Group__4__Impl : ( ( rule__PhysicalNode__NameAssignment_4 ) ) ;
+    public final void rule__PhysicalNode__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18074:1: ( ( ( rule__PhysicalNode__NameAssignment_4 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18075:1: ( ( rule__PhysicalNode__NameAssignment_4 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18075:1: ( ( rule__PhysicalNode__NameAssignment_4 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18076:1: ( rule__PhysicalNode__NameAssignment_4 )
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getNameAssignment_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18077:1: ( rule__PhysicalNode__NameAssignment_4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18077:2: rule__PhysicalNode__NameAssignment_4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__NameAssignment_4_in_rule__PhysicalNode__Group__4__Impl35899);
+            rule__PhysicalNode__NameAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getNameAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__4__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18087:1: rule__PhysicalNode__Group__5 : rule__PhysicalNode__Group__5__Impl rule__PhysicalNode__Group__6 ;
+    public final void rule__PhysicalNode__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18091:1: ( rule__PhysicalNode__Group__5__Impl rule__PhysicalNode__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18092:2: rule__PhysicalNode__Group__5__Impl rule__PhysicalNode__Group__6
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__5__Impl_in_rule__PhysicalNode__Group__535929);
+            rule__PhysicalNode__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__6_in_rule__PhysicalNode__Group__535932);
+            rule__PhysicalNode__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__5"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18099:1: rule__PhysicalNode__Group__5__Impl : ( ( rule__PhysicalNode__Group_5__0 )? ) ;
+    public final void rule__PhysicalNode__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18103:1: ( ( ( rule__PhysicalNode__Group_5__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18104:1: ( ( rule__PhysicalNode__Group_5__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18104:1: ( ( rule__PhysicalNode__Group_5__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18105:1: ( rule__PhysicalNode__Group_5__0 )?
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getGroup_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18106:1: ( rule__PhysicalNode__Group_5__0 )?
+            int alt86=2;
+            int LA86_0 = input.LA(1);
+
+            if ( (LA86_0==67) ) {
+                alt86=1;
+            }
+            switch (alt86) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18106:2: rule__PhysicalNode__Group_5__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_5__0_in_rule__PhysicalNode__Group__5__Impl35959);
+                    rule__PhysicalNode__Group_5__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getGroup_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__5__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18116:1: rule__PhysicalNode__Group__6 : rule__PhysicalNode__Group__6__Impl rule__PhysicalNode__Group__7 ;
+    public final void rule__PhysicalNode__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18120:1: ( rule__PhysicalNode__Group__6__Impl rule__PhysicalNode__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18121:2: rule__PhysicalNode__Group__6__Impl rule__PhysicalNode__Group__7
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__6__Impl_in_rule__PhysicalNode__Group__635990);
+            rule__PhysicalNode__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__7_in_rule__PhysicalNode__Group__635993);
+            rule__PhysicalNode__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__6"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18128:1: rule__PhysicalNode__Group__6__Impl : ( ( rule__PhysicalNode__Group_6__0 )? ) ;
+    public final void rule__PhysicalNode__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18132:1: ( ( ( rule__PhysicalNode__Group_6__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18133:1: ( ( rule__PhysicalNode__Group_6__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18133:1: ( ( rule__PhysicalNode__Group_6__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18134:1: ( rule__PhysicalNode__Group_6__0 )?
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getGroup_6()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18135:1: ( rule__PhysicalNode__Group_6__0 )?
+            int alt87=2;
+            int LA87_0 = input.LA(1);
+
+            if ( (LA87_0==55) ) {
+                alt87=1;
+            }
+            switch (alt87) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18135:2: rule__PhysicalNode__Group_6__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_6__0_in_rule__PhysicalNode__Group__6__Impl36020);
+                    rule__PhysicalNode__Group_6__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getGroup_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__6__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18145:1: rule__PhysicalNode__Group__7 : rule__PhysicalNode__Group__7__Impl rule__PhysicalNode__Group__8 ;
+    public final void rule__PhysicalNode__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18149:1: ( rule__PhysicalNode__Group__7__Impl rule__PhysicalNode__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18150:2: rule__PhysicalNode__Group__7__Impl rule__PhysicalNode__Group__8
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__7__Impl_in_rule__PhysicalNode__Group__736051);
+            rule__PhysicalNode__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__8_in_rule__PhysicalNode__Group__736054);
+            rule__PhysicalNode__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__7"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18157:1: rule__PhysicalNode__Group__7__Impl : ( ( rule__PhysicalNode__Group_7__0 )? ) ;
+    public final void rule__PhysicalNode__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18161:1: ( ( ( rule__PhysicalNode__Group_7__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18162:1: ( ( rule__PhysicalNode__Group_7__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18162:1: ( ( rule__PhysicalNode__Group_7__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18163:1: ( rule__PhysicalNode__Group_7__0 )?
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getGroup_7()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18164:1: ( rule__PhysicalNode__Group_7__0 )?
+            int alt88=2;
+            int LA88_0 = input.LA(1);
+
+            if ( (LA88_0==127) ) {
+                alt88=1;
+            }
+            switch (alt88) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18164:2: rule__PhysicalNode__Group_7__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_7__0_in_rule__PhysicalNode__Group__7__Impl36081);
+                    rule__PhysicalNode__Group_7__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getGroup_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__7__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18174:1: rule__PhysicalNode__Group__8 : rule__PhysicalNode__Group__8__Impl rule__PhysicalNode__Group__9 ;
+    public final void rule__PhysicalNode__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18178:1: ( rule__PhysicalNode__Group__8__Impl rule__PhysicalNode__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18179:2: rule__PhysicalNode__Group__8__Impl rule__PhysicalNode__Group__9
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__8__Impl_in_rule__PhysicalNode__Group__836112);
+            rule__PhysicalNode__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__9_in_rule__PhysicalNode__Group__836115);
+            rule__PhysicalNode__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__8"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18186:1: rule__PhysicalNode__Group__8__Impl : ( 'performance' ) ;
+    public final void rule__PhysicalNode__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18190:1: ( ( 'performance' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18191:1: ( 'performance' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18191:1: ( 'performance' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18192:1: 'performance'
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getPerformanceKeyword_8()); 
+            match(input,122,FollowSets001.FOLLOW_122_in_rule__PhysicalNode__Group__8__Impl36143); 
+             after(grammarAccess.getPhysicalNodeAccess().getPerformanceKeyword_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__8__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18205:1: rule__PhysicalNode__Group__9 : rule__PhysicalNode__Group__9__Impl rule__PhysicalNode__Group__10 ;
+    public final void rule__PhysicalNode__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18209:1: ( rule__PhysicalNode__Group__9__Impl rule__PhysicalNode__Group__10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18210:2: rule__PhysicalNode__Group__9__Impl rule__PhysicalNode__Group__10
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__9__Impl_in_rule__PhysicalNode__Group__936174);
+            rule__PhysicalNode__Group__9__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__10_in_rule__PhysicalNode__Group__936177);
+            rule__PhysicalNode__Group__10();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__9"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18217:1: rule__PhysicalNode__Group__9__Impl : ( ( rule__PhysicalNode__PerformanceAssignment_9 ) ) ;
+    public final void rule__PhysicalNode__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18221:1: ( ( ( rule__PhysicalNode__PerformanceAssignment_9 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18222:1: ( ( rule__PhysicalNode__PerformanceAssignment_9 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18222:1: ( ( rule__PhysicalNode__PerformanceAssignment_9 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18223:1: ( rule__PhysicalNode__PerformanceAssignment_9 )
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getPerformanceAssignment_9()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18224:1: ( rule__PhysicalNode__PerformanceAssignment_9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18224:2: rule__PhysicalNode__PerformanceAssignment_9
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__PerformanceAssignment_9_in_rule__PhysicalNode__Group__9__Impl36204);
+            rule__PhysicalNode__PerformanceAssignment_9();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getPerformanceAssignment_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__9__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18234:1: rule__PhysicalNode__Group__10 : rule__PhysicalNode__Group__10__Impl rule__PhysicalNode__Group__11 ;
+    public final void rule__PhysicalNode__Group__10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18238:1: ( rule__PhysicalNode__Group__10__Impl rule__PhysicalNode__Group__11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18239:2: rule__PhysicalNode__Group__10__Impl rule__PhysicalNode__Group__11
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__10__Impl_in_rule__PhysicalNode__Group__1036234);
+            rule__PhysicalNode__Group__10__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__11_in_rule__PhysicalNode__Group__1036237);
+            rule__PhysicalNode__Group__11();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__10"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__10__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18246:1: rule__PhysicalNode__Group__10__Impl : ( ( rule__PhysicalNode__Group_10__0 )? ) ;
+    public final void rule__PhysicalNode__Group__10__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18250:1: ( ( ( rule__PhysicalNode__Group_10__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18251:1: ( ( rule__PhysicalNode__Group_10__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18251:1: ( ( rule__PhysicalNode__Group_10__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18252:1: ( rule__PhysicalNode__Group_10__0 )?
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getGroup_10()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18253:1: ( rule__PhysicalNode__Group_10__0 )?
+            int alt89=2;
+            int LA89_0 = input.LA(1);
+
+            if ( (LA89_0==125) ) {
+                alt89=1;
+            }
+            switch (alt89) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18253:2: rule__PhysicalNode__Group_10__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_10__0_in_rule__PhysicalNode__Group__10__Impl36264);
+                    rule__PhysicalNode__Group_10__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getGroup_10()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__10__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18263:1: rule__PhysicalNode__Group__11 : rule__PhysicalNode__Group__11__Impl ;
+    public final void rule__PhysicalNode__Group__11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18267:1: ( rule__PhysicalNode__Group__11__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18268:2: rule__PhysicalNode__Group__11__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group__11__Impl_in_rule__PhysicalNode__Group__1136295);
+            rule__PhysicalNode__Group__11__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__11"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group__11__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18274:1: rule__PhysicalNode__Group__11__Impl : ( '}' ) ;
+    public final void rule__PhysicalNode__Group__11__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18278:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18279:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18279:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18280:1: '}'
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getRightCurlyBracketKeyword_11()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__PhysicalNode__Group__11__Impl36323); 
+             after(grammarAccess.getPhysicalNodeAccess().getRightCurlyBracketKeyword_11()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group__11__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_5__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18317:1: rule__PhysicalNode__Group_5__0 : rule__PhysicalNode__Group_5__0__Impl rule__PhysicalNode__Group_5__1 ;
+    public final void rule__PhysicalNode__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18321:1: ( rule__PhysicalNode__Group_5__0__Impl rule__PhysicalNode__Group_5__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18322:2: rule__PhysicalNode__Group_5__0__Impl rule__PhysicalNode__Group_5__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_5__0__Impl_in_rule__PhysicalNode__Group_5__036378);
+            rule__PhysicalNode__Group_5__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_5__1_in_rule__PhysicalNode__Group_5__036381);
+            rule__PhysicalNode__Group_5__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_5__0"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_5__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18329:1: rule__PhysicalNode__Group_5__0__Impl : ( 'alternativeNames' ) ;
+    public final void rule__PhysicalNode__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18333:1: ( ( 'alternativeNames' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18334:1: ( 'alternativeNames' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18334:1: ( 'alternativeNames' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18335:1: 'alternativeNames'
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesKeyword_5_0()); 
+            match(input,67,FollowSets001.FOLLOW_67_in_rule__PhysicalNode__Group_5__0__Impl36409); 
+             after(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesKeyword_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_5__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18348:1: rule__PhysicalNode__Group_5__1 : rule__PhysicalNode__Group_5__1__Impl rule__PhysicalNode__Group_5__2 ;
+    public final void rule__PhysicalNode__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18352:1: ( rule__PhysicalNode__Group_5__1__Impl rule__PhysicalNode__Group_5__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18353:2: rule__PhysicalNode__Group_5__1__Impl rule__PhysicalNode__Group_5__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_5__1__Impl_in_rule__PhysicalNode__Group_5__136440);
+            rule__PhysicalNode__Group_5__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_5__2_in_rule__PhysicalNode__Group_5__136443);
+            rule__PhysicalNode__Group_5__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_5__1"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_5__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18360:1: rule__PhysicalNode__Group_5__1__Impl : ( '{' ) ;
+    public final void rule__PhysicalNode__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18364:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18365:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18365:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18366:1: '{'
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getLeftCurlyBracketKeyword_5_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__PhysicalNode__Group_5__1__Impl36471); 
+             after(grammarAccess.getPhysicalNodeAccess().getLeftCurlyBracketKeyword_5_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_5__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18379:1: rule__PhysicalNode__Group_5__2 : rule__PhysicalNode__Group_5__2__Impl rule__PhysicalNode__Group_5__3 ;
+    public final void rule__PhysicalNode__Group_5__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18383:1: ( rule__PhysicalNode__Group_5__2__Impl rule__PhysicalNode__Group_5__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18384:2: rule__PhysicalNode__Group_5__2__Impl rule__PhysicalNode__Group_5__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_5__2__Impl_in_rule__PhysicalNode__Group_5__236502);
+            rule__PhysicalNode__Group_5__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_5__3_in_rule__PhysicalNode__Group_5__236505);
+            rule__PhysicalNode__Group_5__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_5__2"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_5__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18391:1: rule__PhysicalNode__Group_5__2__Impl : ( ( rule__PhysicalNode__AlternativeNamesAssignment_5_2 ) ) ;
+    public final void rule__PhysicalNode__Group_5__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18395:1: ( ( ( rule__PhysicalNode__AlternativeNamesAssignment_5_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18396:1: ( ( rule__PhysicalNode__AlternativeNamesAssignment_5_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18396:1: ( ( rule__PhysicalNode__AlternativeNamesAssignment_5_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18397:1: ( rule__PhysicalNode__AlternativeNamesAssignment_5_2 )
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesAssignment_5_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18398:1: ( rule__PhysicalNode__AlternativeNamesAssignment_5_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18398:2: rule__PhysicalNode__AlternativeNamesAssignment_5_2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__AlternativeNamesAssignment_5_2_in_rule__PhysicalNode__Group_5__2__Impl36532);
+            rule__PhysicalNode__AlternativeNamesAssignment_5_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesAssignment_5_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_5__2__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_5__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18408:1: rule__PhysicalNode__Group_5__3 : rule__PhysicalNode__Group_5__3__Impl rule__PhysicalNode__Group_5__4 ;
+    public final void rule__PhysicalNode__Group_5__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18412:1: ( rule__PhysicalNode__Group_5__3__Impl rule__PhysicalNode__Group_5__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18413:2: rule__PhysicalNode__Group_5__3__Impl rule__PhysicalNode__Group_5__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_5__3__Impl_in_rule__PhysicalNode__Group_5__336562);
+            rule__PhysicalNode__Group_5__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_5__4_in_rule__PhysicalNode__Group_5__336565);
+            rule__PhysicalNode__Group_5__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_5__3"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_5__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18420:1: rule__PhysicalNode__Group_5__3__Impl : ( ( rule__PhysicalNode__Group_5_3__0 )* ) ;
+    public final void rule__PhysicalNode__Group_5__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18424:1: ( ( ( rule__PhysicalNode__Group_5_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18425:1: ( ( rule__PhysicalNode__Group_5_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18425:1: ( ( rule__PhysicalNode__Group_5_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18426:1: ( rule__PhysicalNode__Group_5_3__0 )*
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getGroup_5_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18427:1: ( rule__PhysicalNode__Group_5_3__0 )*
+            loop90:
+            do {
+                int alt90=2;
+                int LA90_0 = input.LA(1);
+
+                if ( (LA90_0==31) ) {
+                    alt90=1;
+                }
+
+
+                switch (alt90) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18427:2: rule__PhysicalNode__Group_5_3__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_5_3__0_in_rule__PhysicalNode__Group_5__3__Impl36592);
+            	    rule__PhysicalNode__Group_5_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop90;
+                }
+            } while (true);
+
+             after(grammarAccess.getPhysicalNodeAccess().getGroup_5_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_5__3__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_5__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18437:1: rule__PhysicalNode__Group_5__4 : rule__PhysicalNode__Group_5__4__Impl ;
+    public final void rule__PhysicalNode__Group_5__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18441:1: ( rule__PhysicalNode__Group_5__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18442:2: rule__PhysicalNode__Group_5__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_5__4__Impl_in_rule__PhysicalNode__Group_5__436623);
+            rule__PhysicalNode__Group_5__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_5__4"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_5__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18448:1: rule__PhysicalNode__Group_5__4__Impl : ( '}' ) ;
+    public final void rule__PhysicalNode__Group_5__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18452:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18453:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18453:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18454:1: '}'
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getRightCurlyBracketKeyword_5_4()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__PhysicalNode__Group_5__4__Impl36651); 
+             after(grammarAccess.getPhysicalNodeAccess().getRightCurlyBracketKeyword_5_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_5__4__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_5_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18477:1: rule__PhysicalNode__Group_5_3__0 : rule__PhysicalNode__Group_5_3__0__Impl rule__PhysicalNode__Group_5_3__1 ;
+    public final void rule__PhysicalNode__Group_5_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18481:1: ( rule__PhysicalNode__Group_5_3__0__Impl rule__PhysicalNode__Group_5_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18482:2: rule__PhysicalNode__Group_5_3__0__Impl rule__PhysicalNode__Group_5_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_5_3__0__Impl_in_rule__PhysicalNode__Group_5_3__036692);
+            rule__PhysicalNode__Group_5_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_5_3__1_in_rule__PhysicalNode__Group_5_3__036695);
+            rule__PhysicalNode__Group_5_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_5_3__0"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_5_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18489:1: rule__PhysicalNode__Group_5_3__0__Impl : ( ',' ) ;
+    public final void rule__PhysicalNode__Group_5_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18493:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18494:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18494:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18495:1: ','
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_5_3_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__PhysicalNode__Group_5_3__0__Impl36723); 
+             after(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_5_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_5_3__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_5_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18508:1: rule__PhysicalNode__Group_5_3__1 : rule__PhysicalNode__Group_5_3__1__Impl ;
+    public final void rule__PhysicalNode__Group_5_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18512:1: ( rule__PhysicalNode__Group_5_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18513:2: rule__PhysicalNode__Group_5_3__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_5_3__1__Impl_in_rule__PhysicalNode__Group_5_3__136754);
+            rule__PhysicalNode__Group_5_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_5_3__1"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_5_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18519:1: rule__PhysicalNode__Group_5_3__1__Impl : ( ( rule__PhysicalNode__AlternativeNamesAssignment_5_3_1 ) ) ;
+    public final void rule__PhysicalNode__Group_5_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18523:1: ( ( ( rule__PhysicalNode__AlternativeNamesAssignment_5_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18524:1: ( ( rule__PhysicalNode__AlternativeNamesAssignment_5_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18524:1: ( ( rule__PhysicalNode__AlternativeNamesAssignment_5_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18525:1: ( rule__PhysicalNode__AlternativeNamesAssignment_5_3_1 )
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesAssignment_5_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18526:1: ( rule__PhysicalNode__AlternativeNamesAssignment_5_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18526:2: rule__PhysicalNode__AlternativeNamesAssignment_5_3_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__AlternativeNamesAssignment_5_3_1_in_rule__PhysicalNode__Group_5_3__1__Impl36781);
+            rule__PhysicalNode__AlternativeNamesAssignment_5_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesAssignment_5_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_5_3__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_6__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18540:1: rule__PhysicalNode__Group_6__0 : rule__PhysicalNode__Group_6__0__Impl rule__PhysicalNode__Group_6__1 ;
+    public final void rule__PhysicalNode__Group_6__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18544:1: ( rule__PhysicalNode__Group_6__0__Impl rule__PhysicalNode__Group_6__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18545:2: rule__PhysicalNode__Group_6__0__Impl rule__PhysicalNode__Group_6__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_6__0__Impl_in_rule__PhysicalNode__Group_6__036815);
+            rule__PhysicalNode__Group_6__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_6__1_in_rule__PhysicalNode__Group_6__036818);
+            rule__PhysicalNode__Group_6__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_6__0"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_6__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18552:1: rule__PhysicalNode__Group_6__0__Impl : ( 'software' ) ;
+    public final void rule__PhysicalNode__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18556:1: ( ( 'software' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18557:1: ( 'software' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18557:1: ( 'software' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18558:1: 'software'
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getSoftwareKeyword_6_0()); 
+            match(input,55,FollowSets001.FOLLOW_55_in_rule__PhysicalNode__Group_6__0__Impl36846); 
+             after(grammarAccess.getPhysicalNodeAccess().getSoftwareKeyword_6_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_6__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_6__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18571:1: rule__PhysicalNode__Group_6__1 : rule__PhysicalNode__Group_6__1__Impl rule__PhysicalNode__Group_6__2 ;
+    public final void rule__PhysicalNode__Group_6__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18575:1: ( rule__PhysicalNode__Group_6__1__Impl rule__PhysicalNode__Group_6__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18576:2: rule__PhysicalNode__Group_6__1__Impl rule__PhysicalNode__Group_6__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_6__1__Impl_in_rule__PhysicalNode__Group_6__136877);
+            rule__PhysicalNode__Group_6__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_6__2_in_rule__PhysicalNode__Group_6__136880);
+            rule__PhysicalNode__Group_6__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_6__1"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_6__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18583:1: rule__PhysicalNode__Group_6__1__Impl : ( '(' ) ;
+    public final void rule__PhysicalNode__Group_6__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18587:1: ( ( '(' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18588:1: ( '(' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18588:1: ( '(' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18589:1: '('
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getLeftParenthesisKeyword_6_1()); 
+            match(input,123,FollowSets001.FOLLOW_123_in_rule__PhysicalNode__Group_6__1__Impl36908); 
+             after(grammarAccess.getPhysicalNodeAccess().getLeftParenthesisKeyword_6_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_6__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_6__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18602:1: rule__PhysicalNode__Group_6__2 : rule__PhysicalNode__Group_6__2__Impl rule__PhysicalNode__Group_6__3 ;
+    public final void rule__PhysicalNode__Group_6__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18606:1: ( rule__PhysicalNode__Group_6__2__Impl rule__PhysicalNode__Group_6__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18607:2: rule__PhysicalNode__Group_6__2__Impl rule__PhysicalNode__Group_6__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_6__2__Impl_in_rule__PhysicalNode__Group_6__236939);
+            rule__PhysicalNode__Group_6__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_6__3_in_rule__PhysicalNode__Group_6__236942);
+            rule__PhysicalNode__Group_6__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_6__2"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_6__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18614:1: rule__PhysicalNode__Group_6__2__Impl : ( ( rule__PhysicalNode__SoftwareAssignment_6_2 ) ) ;
+    public final void rule__PhysicalNode__Group_6__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18618:1: ( ( ( rule__PhysicalNode__SoftwareAssignment_6_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18619:1: ( ( rule__PhysicalNode__SoftwareAssignment_6_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18619:1: ( ( rule__PhysicalNode__SoftwareAssignment_6_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18620:1: ( rule__PhysicalNode__SoftwareAssignment_6_2 )
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getSoftwareAssignment_6_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18621:1: ( rule__PhysicalNode__SoftwareAssignment_6_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18621:2: rule__PhysicalNode__SoftwareAssignment_6_2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__SoftwareAssignment_6_2_in_rule__PhysicalNode__Group_6__2__Impl36969);
+            rule__PhysicalNode__SoftwareAssignment_6_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getSoftwareAssignment_6_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_6__2__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_6__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18631:1: rule__PhysicalNode__Group_6__3 : rule__PhysicalNode__Group_6__3__Impl rule__PhysicalNode__Group_6__4 ;
+    public final void rule__PhysicalNode__Group_6__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18635:1: ( rule__PhysicalNode__Group_6__3__Impl rule__PhysicalNode__Group_6__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18636:2: rule__PhysicalNode__Group_6__3__Impl rule__PhysicalNode__Group_6__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_6__3__Impl_in_rule__PhysicalNode__Group_6__336999);
+            rule__PhysicalNode__Group_6__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_6__4_in_rule__PhysicalNode__Group_6__337002);
+            rule__PhysicalNode__Group_6__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_6__3"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_6__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18643:1: rule__PhysicalNode__Group_6__3__Impl : ( ( rule__PhysicalNode__Group_6_3__0 )* ) ;
+    public final void rule__PhysicalNode__Group_6__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18647:1: ( ( ( rule__PhysicalNode__Group_6_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18648:1: ( ( rule__PhysicalNode__Group_6_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18648:1: ( ( rule__PhysicalNode__Group_6_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18649:1: ( rule__PhysicalNode__Group_6_3__0 )*
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getGroup_6_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18650:1: ( rule__PhysicalNode__Group_6_3__0 )*
+            loop91:
+            do {
+                int alt91=2;
+                int LA91_0 = input.LA(1);
+
+                if ( (LA91_0==31) ) {
+                    alt91=1;
+                }
+
+
+                switch (alt91) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18650:2: rule__PhysicalNode__Group_6_3__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_6_3__0_in_rule__PhysicalNode__Group_6__3__Impl37029);
+            	    rule__PhysicalNode__Group_6_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop91;
+                }
+            } while (true);
+
+             after(grammarAccess.getPhysicalNodeAccess().getGroup_6_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_6__3__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_6__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18660:1: rule__PhysicalNode__Group_6__4 : rule__PhysicalNode__Group_6__4__Impl ;
+    public final void rule__PhysicalNode__Group_6__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18664:1: ( rule__PhysicalNode__Group_6__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18665:2: rule__PhysicalNode__Group_6__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_6__4__Impl_in_rule__PhysicalNode__Group_6__437060);
+            rule__PhysicalNode__Group_6__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_6__4"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_6__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18671:1: rule__PhysicalNode__Group_6__4__Impl : ( ')' ) ;
+    public final void rule__PhysicalNode__Group_6__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18675:1: ( ( ')' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18676:1: ( ')' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18676:1: ( ')' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18677:1: ')'
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getRightParenthesisKeyword_6_4()); 
+            match(input,124,FollowSets001.FOLLOW_124_in_rule__PhysicalNode__Group_6__4__Impl37088); 
+             after(grammarAccess.getPhysicalNodeAccess().getRightParenthesisKeyword_6_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_6__4__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_6_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18700:1: rule__PhysicalNode__Group_6_3__0 : rule__PhysicalNode__Group_6_3__0__Impl rule__PhysicalNode__Group_6_3__1 ;
+    public final void rule__PhysicalNode__Group_6_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18704:1: ( rule__PhysicalNode__Group_6_3__0__Impl rule__PhysicalNode__Group_6_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18705:2: rule__PhysicalNode__Group_6_3__0__Impl rule__PhysicalNode__Group_6_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_6_3__0__Impl_in_rule__PhysicalNode__Group_6_3__037129);
+            rule__PhysicalNode__Group_6_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_6_3__1_in_rule__PhysicalNode__Group_6_3__037132);
+            rule__PhysicalNode__Group_6_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_6_3__0"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_6_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18712:1: rule__PhysicalNode__Group_6_3__0__Impl : ( ',' ) ;
+    public final void rule__PhysicalNode__Group_6_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18716:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18717:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18717:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18718:1: ','
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_6_3_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__PhysicalNode__Group_6_3__0__Impl37160); 
+             after(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_6_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_6_3__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_6_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18731:1: rule__PhysicalNode__Group_6_3__1 : rule__PhysicalNode__Group_6_3__1__Impl ;
+    public final void rule__PhysicalNode__Group_6_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18735:1: ( rule__PhysicalNode__Group_6_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18736:2: rule__PhysicalNode__Group_6_3__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_6_3__1__Impl_in_rule__PhysicalNode__Group_6_3__137191);
+            rule__PhysicalNode__Group_6_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_6_3__1"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_6_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18742:1: rule__PhysicalNode__Group_6_3__1__Impl : ( ( rule__PhysicalNode__SoftwareAssignment_6_3_1 ) ) ;
+    public final void rule__PhysicalNode__Group_6_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18746:1: ( ( ( rule__PhysicalNode__SoftwareAssignment_6_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18747:1: ( ( rule__PhysicalNode__SoftwareAssignment_6_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18747:1: ( ( rule__PhysicalNode__SoftwareAssignment_6_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18748:1: ( rule__PhysicalNode__SoftwareAssignment_6_3_1 )
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getSoftwareAssignment_6_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18749:1: ( rule__PhysicalNode__SoftwareAssignment_6_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18749:2: rule__PhysicalNode__SoftwareAssignment_6_3_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__SoftwareAssignment_6_3_1_in_rule__PhysicalNode__Group_6_3__1__Impl37218);
+            rule__PhysicalNode__SoftwareAssignment_6_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getSoftwareAssignment_6_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_6_3__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_7__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18763:1: rule__PhysicalNode__Group_7__0 : rule__PhysicalNode__Group_7__0__Impl rule__PhysicalNode__Group_7__1 ;
+    public final void rule__PhysicalNode__Group_7__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18767:1: ( rule__PhysicalNode__Group_7__0__Impl rule__PhysicalNode__Group_7__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18768:2: rule__PhysicalNode__Group_7__0__Impl rule__PhysicalNode__Group_7__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_7__0__Impl_in_rule__PhysicalNode__Group_7__037252);
+            rule__PhysicalNode__Group_7__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_7__1_in_rule__PhysicalNode__Group_7__037255);
+            rule__PhysicalNode__Group_7__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_7__0"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_7__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18775:1: rule__PhysicalNode__Group_7__0__Impl : ( 'hosts' ) ;
+    public final void rule__PhysicalNode__Group_7__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18779:1: ( ( 'hosts' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18780:1: ( 'hosts' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18780:1: ( 'hosts' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18781:1: 'hosts'
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getHostsKeyword_7_0()); 
+            match(input,127,FollowSets001.FOLLOW_127_in_rule__PhysicalNode__Group_7__0__Impl37283); 
+             after(grammarAccess.getPhysicalNodeAccess().getHostsKeyword_7_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_7__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_7__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18794:1: rule__PhysicalNode__Group_7__1 : rule__PhysicalNode__Group_7__1__Impl rule__PhysicalNode__Group_7__2 ;
+    public final void rule__PhysicalNode__Group_7__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18798:1: ( rule__PhysicalNode__Group_7__1__Impl rule__PhysicalNode__Group_7__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18799:2: rule__PhysicalNode__Group_7__1__Impl rule__PhysicalNode__Group_7__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_7__1__Impl_in_rule__PhysicalNode__Group_7__137314);
+            rule__PhysicalNode__Group_7__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_7__2_in_rule__PhysicalNode__Group_7__137317);
+            rule__PhysicalNode__Group_7__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_7__1"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_7__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18806:1: rule__PhysicalNode__Group_7__1__Impl : ( '(' ) ;
+    public final void rule__PhysicalNode__Group_7__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18810:1: ( ( '(' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18811:1: ( '(' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18811:1: ( '(' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18812:1: '('
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getLeftParenthesisKeyword_7_1()); 
+            match(input,123,FollowSets001.FOLLOW_123_in_rule__PhysicalNode__Group_7__1__Impl37345); 
+             after(grammarAccess.getPhysicalNodeAccess().getLeftParenthesisKeyword_7_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_7__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_7__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18825:1: rule__PhysicalNode__Group_7__2 : rule__PhysicalNode__Group_7__2__Impl rule__PhysicalNode__Group_7__3 ;
+    public final void rule__PhysicalNode__Group_7__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18829:1: ( rule__PhysicalNode__Group_7__2__Impl rule__PhysicalNode__Group_7__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18830:2: rule__PhysicalNode__Group_7__2__Impl rule__PhysicalNode__Group_7__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_7__2__Impl_in_rule__PhysicalNode__Group_7__237376);
+            rule__PhysicalNode__Group_7__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_7__3_in_rule__PhysicalNode__Group_7__237379);
+            rule__PhysicalNode__Group_7__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_7__2"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_7__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18837:1: rule__PhysicalNode__Group_7__2__Impl : ( ( rule__PhysicalNode__HostsAssignment_7_2 ) ) ;
+    public final void rule__PhysicalNode__Group_7__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18841:1: ( ( ( rule__PhysicalNode__HostsAssignment_7_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18842:1: ( ( rule__PhysicalNode__HostsAssignment_7_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18842:1: ( ( rule__PhysicalNode__HostsAssignment_7_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18843:1: ( rule__PhysicalNode__HostsAssignment_7_2 )
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getHostsAssignment_7_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18844:1: ( rule__PhysicalNode__HostsAssignment_7_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18844:2: rule__PhysicalNode__HostsAssignment_7_2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__HostsAssignment_7_2_in_rule__PhysicalNode__Group_7__2__Impl37406);
+            rule__PhysicalNode__HostsAssignment_7_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getHostsAssignment_7_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_7__2__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_7__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18854:1: rule__PhysicalNode__Group_7__3 : rule__PhysicalNode__Group_7__3__Impl rule__PhysicalNode__Group_7__4 ;
+    public final void rule__PhysicalNode__Group_7__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18858:1: ( rule__PhysicalNode__Group_7__3__Impl rule__PhysicalNode__Group_7__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18859:2: rule__PhysicalNode__Group_7__3__Impl rule__PhysicalNode__Group_7__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_7__3__Impl_in_rule__PhysicalNode__Group_7__337436);
+            rule__PhysicalNode__Group_7__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_7__4_in_rule__PhysicalNode__Group_7__337439);
+            rule__PhysicalNode__Group_7__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_7__3"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_7__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18866:1: rule__PhysicalNode__Group_7__3__Impl : ( ( rule__PhysicalNode__Group_7_3__0 )* ) ;
+    public final void rule__PhysicalNode__Group_7__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18870:1: ( ( ( rule__PhysicalNode__Group_7_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18871:1: ( ( rule__PhysicalNode__Group_7_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18871:1: ( ( rule__PhysicalNode__Group_7_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18872:1: ( rule__PhysicalNode__Group_7_3__0 )*
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getGroup_7_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18873:1: ( rule__PhysicalNode__Group_7_3__0 )*
+            loop92:
+            do {
+                int alt92=2;
+                int LA92_0 = input.LA(1);
+
+                if ( (LA92_0==31) ) {
+                    alt92=1;
+                }
+
+
+                switch (alt92) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18873:2: rule__PhysicalNode__Group_7_3__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_7_3__0_in_rule__PhysicalNode__Group_7__3__Impl37466);
+            	    rule__PhysicalNode__Group_7_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop92;
+                }
+            } while (true);
+
+             after(grammarAccess.getPhysicalNodeAccess().getGroup_7_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_7__3__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_7__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18883:1: rule__PhysicalNode__Group_7__4 : rule__PhysicalNode__Group_7__4__Impl ;
+    public final void rule__PhysicalNode__Group_7__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18887:1: ( rule__PhysicalNode__Group_7__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18888:2: rule__PhysicalNode__Group_7__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_7__4__Impl_in_rule__PhysicalNode__Group_7__437497);
+            rule__PhysicalNode__Group_7__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_7__4"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_7__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18894:1: rule__PhysicalNode__Group_7__4__Impl : ( ')' ) ;
+    public final void rule__PhysicalNode__Group_7__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18898:1: ( ( ')' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18899:1: ( ')' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18899:1: ( ')' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18900:1: ')'
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getRightParenthesisKeyword_7_4()); 
+            match(input,124,FollowSets001.FOLLOW_124_in_rule__PhysicalNode__Group_7__4__Impl37525); 
+             after(grammarAccess.getPhysicalNodeAccess().getRightParenthesisKeyword_7_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_7__4__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_7_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18923:1: rule__PhysicalNode__Group_7_3__0 : rule__PhysicalNode__Group_7_3__0__Impl rule__PhysicalNode__Group_7_3__1 ;
+    public final void rule__PhysicalNode__Group_7_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18927:1: ( rule__PhysicalNode__Group_7_3__0__Impl rule__PhysicalNode__Group_7_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18928:2: rule__PhysicalNode__Group_7_3__0__Impl rule__PhysicalNode__Group_7_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_7_3__0__Impl_in_rule__PhysicalNode__Group_7_3__037566);
+            rule__PhysicalNode__Group_7_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_7_3__1_in_rule__PhysicalNode__Group_7_3__037569);
+            rule__PhysicalNode__Group_7_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_7_3__0"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_7_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18935:1: rule__PhysicalNode__Group_7_3__0__Impl : ( ',' ) ;
+    public final void rule__PhysicalNode__Group_7_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18939:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18940:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18940:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18941:1: ','
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_7_3_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__PhysicalNode__Group_7_3__0__Impl37597); 
+             after(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_7_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_7_3__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_7_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18954:1: rule__PhysicalNode__Group_7_3__1 : rule__PhysicalNode__Group_7_3__1__Impl ;
+    public final void rule__PhysicalNode__Group_7_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18958:1: ( rule__PhysicalNode__Group_7_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18959:2: rule__PhysicalNode__Group_7_3__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_7_3__1__Impl_in_rule__PhysicalNode__Group_7_3__137628);
+            rule__PhysicalNode__Group_7_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_7_3__1"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_7_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18965:1: rule__PhysicalNode__Group_7_3__1__Impl : ( ( rule__PhysicalNode__HostsAssignment_7_3_1 ) ) ;
+    public final void rule__PhysicalNode__Group_7_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18969:1: ( ( ( rule__PhysicalNode__HostsAssignment_7_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18970:1: ( ( rule__PhysicalNode__HostsAssignment_7_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18970:1: ( ( rule__PhysicalNode__HostsAssignment_7_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18971:1: ( rule__PhysicalNode__HostsAssignment_7_3_1 )
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getHostsAssignment_7_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18972:1: ( rule__PhysicalNode__HostsAssignment_7_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18972:2: rule__PhysicalNode__HostsAssignment_7_3_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__HostsAssignment_7_3_1_in_rule__PhysicalNode__Group_7_3__1__Impl37655);
+            rule__PhysicalNode__HostsAssignment_7_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getHostsAssignment_7_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_7_3__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_10__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18986:1: rule__PhysicalNode__Group_10__0 : rule__PhysicalNode__Group_10__0__Impl rule__PhysicalNode__Group_10__1 ;
+    public final void rule__PhysicalNode__Group_10__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18990:1: ( rule__PhysicalNode__Group_10__0__Impl rule__PhysicalNode__Group_10__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18991:2: rule__PhysicalNode__Group_10__0__Impl rule__PhysicalNode__Group_10__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_10__0__Impl_in_rule__PhysicalNode__Group_10__037689);
+            rule__PhysicalNode__Group_10__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_10__1_in_rule__PhysicalNode__Group_10__037692);
+            rule__PhysicalNode__Group_10__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_10__0"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_10__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:18998:1: rule__PhysicalNode__Group_10__0__Impl : ( 'interfaces' ) ;
+    public final void rule__PhysicalNode__Group_10__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19002:1: ( ( 'interfaces' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19003:1: ( 'interfaces' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19003:1: ( 'interfaces' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19004:1: 'interfaces'
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getInterfacesKeyword_10_0()); 
+            match(input,125,FollowSets001.FOLLOW_125_in_rule__PhysicalNode__Group_10__0__Impl37720); 
+             after(grammarAccess.getPhysicalNodeAccess().getInterfacesKeyword_10_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_10__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_10__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19017:1: rule__PhysicalNode__Group_10__1 : rule__PhysicalNode__Group_10__1__Impl rule__PhysicalNode__Group_10__2 ;
+    public final void rule__PhysicalNode__Group_10__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19021:1: ( rule__PhysicalNode__Group_10__1__Impl rule__PhysicalNode__Group_10__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19022:2: rule__PhysicalNode__Group_10__1__Impl rule__PhysicalNode__Group_10__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_10__1__Impl_in_rule__PhysicalNode__Group_10__137751);
+            rule__PhysicalNode__Group_10__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_10__2_in_rule__PhysicalNode__Group_10__137754);
+            rule__PhysicalNode__Group_10__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_10__1"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_10__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19029:1: rule__PhysicalNode__Group_10__1__Impl : ( '{' ) ;
+    public final void rule__PhysicalNode__Group_10__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19033:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19034:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19034:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19035:1: '{'
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getLeftCurlyBracketKeyword_10_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__PhysicalNode__Group_10__1__Impl37782); 
+             after(grammarAccess.getPhysicalNodeAccess().getLeftCurlyBracketKeyword_10_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_10__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_10__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19048:1: rule__PhysicalNode__Group_10__2 : rule__PhysicalNode__Group_10__2__Impl rule__PhysicalNode__Group_10__3 ;
+    public final void rule__PhysicalNode__Group_10__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19052:1: ( rule__PhysicalNode__Group_10__2__Impl rule__PhysicalNode__Group_10__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19053:2: rule__PhysicalNode__Group_10__2__Impl rule__PhysicalNode__Group_10__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_10__2__Impl_in_rule__PhysicalNode__Group_10__237813);
+            rule__PhysicalNode__Group_10__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_10__3_in_rule__PhysicalNode__Group_10__237816);
+            rule__PhysicalNode__Group_10__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_10__2"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_10__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19060:1: rule__PhysicalNode__Group_10__2__Impl : ( ( rule__PhysicalNode__InterfacesAssignment_10_2 ) ) ;
+    public final void rule__PhysicalNode__Group_10__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19064:1: ( ( ( rule__PhysicalNode__InterfacesAssignment_10_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19065:1: ( ( rule__PhysicalNode__InterfacesAssignment_10_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19065:1: ( ( rule__PhysicalNode__InterfacesAssignment_10_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19066:1: ( rule__PhysicalNode__InterfacesAssignment_10_2 )
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getInterfacesAssignment_10_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19067:1: ( rule__PhysicalNode__InterfacesAssignment_10_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19067:2: rule__PhysicalNode__InterfacesAssignment_10_2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__InterfacesAssignment_10_2_in_rule__PhysicalNode__Group_10__2__Impl37843);
+            rule__PhysicalNode__InterfacesAssignment_10_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getInterfacesAssignment_10_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_10__2__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_10__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19077:1: rule__PhysicalNode__Group_10__3 : rule__PhysicalNode__Group_10__3__Impl rule__PhysicalNode__Group_10__4 ;
+    public final void rule__PhysicalNode__Group_10__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19081:1: ( rule__PhysicalNode__Group_10__3__Impl rule__PhysicalNode__Group_10__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19082:2: rule__PhysicalNode__Group_10__3__Impl rule__PhysicalNode__Group_10__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_10__3__Impl_in_rule__PhysicalNode__Group_10__337873);
+            rule__PhysicalNode__Group_10__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_10__4_in_rule__PhysicalNode__Group_10__337876);
+            rule__PhysicalNode__Group_10__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_10__3"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_10__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19089:1: rule__PhysicalNode__Group_10__3__Impl : ( ( rule__PhysicalNode__Group_10_3__0 )* ) ;
+    public final void rule__PhysicalNode__Group_10__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19093:1: ( ( ( rule__PhysicalNode__Group_10_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19094:1: ( ( rule__PhysicalNode__Group_10_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19094:1: ( ( rule__PhysicalNode__Group_10_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19095:1: ( rule__PhysicalNode__Group_10_3__0 )*
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getGroup_10_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19096:1: ( rule__PhysicalNode__Group_10_3__0 )*
+            loop93:
+            do {
+                int alt93=2;
+                int LA93_0 = input.LA(1);
+
+                if ( (LA93_0==31) ) {
+                    alt93=1;
+                }
+
+
+                switch (alt93) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19096:2: rule__PhysicalNode__Group_10_3__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_10_3__0_in_rule__PhysicalNode__Group_10__3__Impl37903);
+            	    rule__PhysicalNode__Group_10_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop93;
+                }
+            } while (true);
+
+             after(grammarAccess.getPhysicalNodeAccess().getGroup_10_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_10__3__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_10__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19106:1: rule__PhysicalNode__Group_10__4 : rule__PhysicalNode__Group_10__4__Impl ;
+    public final void rule__PhysicalNode__Group_10__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19110:1: ( rule__PhysicalNode__Group_10__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19111:2: rule__PhysicalNode__Group_10__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_10__4__Impl_in_rule__PhysicalNode__Group_10__437934);
+            rule__PhysicalNode__Group_10__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_10__4"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_10__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19117:1: rule__PhysicalNode__Group_10__4__Impl : ( '}' ) ;
+    public final void rule__PhysicalNode__Group_10__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19121:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19122:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19122:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19123:1: '}'
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getRightCurlyBracketKeyword_10_4()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__PhysicalNode__Group_10__4__Impl37962); 
+             after(grammarAccess.getPhysicalNodeAccess().getRightCurlyBracketKeyword_10_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_10__4__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_10_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19146:1: rule__PhysicalNode__Group_10_3__0 : rule__PhysicalNode__Group_10_3__0__Impl rule__PhysicalNode__Group_10_3__1 ;
+    public final void rule__PhysicalNode__Group_10_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19150:1: ( rule__PhysicalNode__Group_10_3__0__Impl rule__PhysicalNode__Group_10_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19151:2: rule__PhysicalNode__Group_10_3__0__Impl rule__PhysicalNode__Group_10_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_10_3__0__Impl_in_rule__PhysicalNode__Group_10_3__038003);
+            rule__PhysicalNode__Group_10_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_10_3__1_in_rule__PhysicalNode__Group_10_3__038006);
+            rule__PhysicalNode__Group_10_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_10_3__0"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_10_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19158:1: rule__PhysicalNode__Group_10_3__0__Impl : ( ',' ) ;
+    public final void rule__PhysicalNode__Group_10_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19162:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19163:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19163:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19164:1: ','
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_10_3_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__PhysicalNode__Group_10_3__0__Impl38034); 
+             after(grammarAccess.getPhysicalNodeAccess().getCommaKeyword_10_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_10_3__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_10_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19177:1: rule__PhysicalNode__Group_10_3__1 : rule__PhysicalNode__Group_10_3__1__Impl ;
+    public final void rule__PhysicalNode__Group_10_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19181:1: ( rule__PhysicalNode__Group_10_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19182:2: rule__PhysicalNode__Group_10_3__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__Group_10_3__1__Impl_in_rule__PhysicalNode__Group_10_3__138065);
+            rule__PhysicalNode__Group_10_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_10_3__1"
+
+
+    // $ANTLR start "rule__PhysicalNode__Group_10_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19188:1: rule__PhysicalNode__Group_10_3__1__Impl : ( ( rule__PhysicalNode__InterfacesAssignment_10_3_1 ) ) ;
+    public final void rule__PhysicalNode__Group_10_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19192:1: ( ( ( rule__PhysicalNode__InterfacesAssignment_10_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19193:1: ( ( rule__PhysicalNode__InterfacesAssignment_10_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19193:1: ( ( rule__PhysicalNode__InterfacesAssignment_10_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19194:1: ( rule__PhysicalNode__InterfacesAssignment_10_3_1 )
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getInterfacesAssignment_10_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19195:1: ( rule__PhysicalNode__InterfacesAssignment_10_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19195:2: rule__PhysicalNode__InterfacesAssignment_10_3_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalNode__InterfacesAssignment_10_3_1_in_rule__PhysicalNode__Group_10_3__1__Impl38092);
+            rule__PhysicalNode__InterfacesAssignment_10_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getInterfacesAssignment_10_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__Group_10_3__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19209:1: rule__PhysicalLink__Group__0 : rule__PhysicalLink__Group__0__Impl rule__PhysicalLink__Group__1 ;
+    public final void rule__PhysicalLink__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19213:1: ( rule__PhysicalLink__Group__0__Impl rule__PhysicalLink__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19214:2: rule__PhysicalLink__Group__0__Impl rule__PhysicalLink__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__0__Impl_in_rule__PhysicalLink__Group__038126);
+            rule__PhysicalLink__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__1_in_rule__PhysicalLink__Group__038129);
+            rule__PhysicalLink__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__0"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19221:1: rule__PhysicalLink__Group__0__Impl : ( 'PhysicalLink' ) ;
+    public final void rule__PhysicalLink__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19225:1: ( ( 'PhysicalLink' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19226:1: ( 'PhysicalLink' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19226:1: ( 'PhysicalLink' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19227:1: 'PhysicalLink'
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getPhysicalLinkKeyword_0()); 
+            match(input,128,FollowSets001.FOLLOW_128_in_rule__PhysicalLink__Group__0__Impl38157); 
+             after(grammarAccess.getPhysicalLinkAccess().getPhysicalLinkKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19240:1: rule__PhysicalLink__Group__1 : rule__PhysicalLink__Group__1__Impl rule__PhysicalLink__Group__2 ;
+    public final void rule__PhysicalLink__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19244:1: ( rule__PhysicalLink__Group__1__Impl rule__PhysicalLink__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19245:2: rule__PhysicalLink__Group__1__Impl rule__PhysicalLink__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__1__Impl_in_rule__PhysicalLink__Group__138188);
+            rule__PhysicalLink__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__2_in_rule__PhysicalLink__Group__138191);
+            rule__PhysicalLink__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__1"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19252:1: rule__PhysicalLink__Group__1__Impl : ( ( rule__PhysicalLink__IdAssignment_1 ) ) ;
+    public final void rule__PhysicalLink__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19256:1: ( ( ( rule__PhysicalLink__IdAssignment_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19257:1: ( ( rule__PhysicalLink__IdAssignment_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19257:1: ( ( rule__PhysicalLink__IdAssignment_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19258:1: ( rule__PhysicalLink__IdAssignment_1 )
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getIdAssignment_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19259:1: ( rule__PhysicalLink__IdAssignment_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19259:2: rule__PhysicalLink__IdAssignment_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__IdAssignment_1_in_rule__PhysicalLink__Group__1__Impl38218);
+            rule__PhysicalLink__IdAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalLinkAccess().getIdAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19269:1: rule__PhysicalLink__Group__2 : rule__PhysicalLink__Group__2__Impl rule__PhysicalLink__Group__3 ;
+    public final void rule__PhysicalLink__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19273:1: ( rule__PhysicalLink__Group__2__Impl rule__PhysicalLink__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19274:2: rule__PhysicalLink__Group__2__Impl rule__PhysicalLink__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__2__Impl_in_rule__PhysicalLink__Group__238248);
+            rule__PhysicalLink__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__3_in_rule__PhysicalLink__Group__238251);
+            rule__PhysicalLink__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__2"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19281:1: rule__PhysicalLink__Group__2__Impl : ( '{' ) ;
+    public final void rule__PhysicalLink__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19285:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19286:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19286:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19287:1: '{'
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__PhysicalLink__Group__2__Impl38279); 
+             after(grammarAccess.getPhysicalLinkAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19300:1: rule__PhysicalLink__Group__3 : rule__PhysicalLink__Group__3__Impl rule__PhysicalLink__Group__4 ;
+    public final void rule__PhysicalLink__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19304:1: ( rule__PhysicalLink__Group__3__Impl rule__PhysicalLink__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19305:2: rule__PhysicalLink__Group__3__Impl rule__PhysicalLink__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__3__Impl_in_rule__PhysicalLink__Group__338310);
+            rule__PhysicalLink__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__4_in_rule__PhysicalLink__Group__338313);
+            rule__PhysicalLink__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__3"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19312:1: rule__PhysicalLink__Group__3__Impl : ( 'name' ) ;
+    public final void rule__PhysicalLink__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19316:1: ( ( 'name' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19317:1: ( 'name' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19317:1: ( 'name' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19318:1: 'name'
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getNameKeyword_3()); 
+            match(input,65,FollowSets001.FOLLOW_65_in_rule__PhysicalLink__Group__3__Impl38341); 
+             after(grammarAccess.getPhysicalLinkAccess().getNameKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__3__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19331:1: rule__PhysicalLink__Group__4 : rule__PhysicalLink__Group__4__Impl rule__PhysicalLink__Group__5 ;
+    public final void rule__PhysicalLink__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19335:1: ( rule__PhysicalLink__Group__4__Impl rule__PhysicalLink__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19336:2: rule__PhysicalLink__Group__4__Impl rule__PhysicalLink__Group__5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__4__Impl_in_rule__PhysicalLink__Group__438372);
+            rule__PhysicalLink__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__5_in_rule__PhysicalLink__Group__438375);
+            rule__PhysicalLink__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__4"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19343:1: rule__PhysicalLink__Group__4__Impl : ( ( rule__PhysicalLink__NameAssignment_4 ) ) ;
+    public final void rule__PhysicalLink__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19347:1: ( ( ( rule__PhysicalLink__NameAssignment_4 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19348:1: ( ( rule__PhysicalLink__NameAssignment_4 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19348:1: ( ( rule__PhysicalLink__NameAssignment_4 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19349:1: ( rule__PhysicalLink__NameAssignment_4 )
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getNameAssignment_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19350:1: ( rule__PhysicalLink__NameAssignment_4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19350:2: rule__PhysicalLink__NameAssignment_4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__NameAssignment_4_in_rule__PhysicalLink__Group__4__Impl38402);
+            rule__PhysicalLink__NameAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalLinkAccess().getNameAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__4__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19360:1: rule__PhysicalLink__Group__5 : rule__PhysicalLink__Group__5__Impl rule__PhysicalLink__Group__6 ;
+    public final void rule__PhysicalLink__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19364:1: ( rule__PhysicalLink__Group__5__Impl rule__PhysicalLink__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19365:2: rule__PhysicalLink__Group__5__Impl rule__PhysicalLink__Group__6
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__5__Impl_in_rule__PhysicalLink__Group__538432);
+            rule__PhysicalLink__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__6_in_rule__PhysicalLink__Group__538435);
+            rule__PhysicalLink__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__5"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19372:1: rule__PhysicalLink__Group__5__Impl : ( ( rule__PhysicalLink__Group_5__0 )? ) ;
+    public final void rule__PhysicalLink__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19376:1: ( ( ( rule__PhysicalLink__Group_5__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19377:1: ( ( rule__PhysicalLink__Group_5__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19377:1: ( ( rule__PhysicalLink__Group_5__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19378:1: ( rule__PhysicalLink__Group_5__0 )?
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getGroup_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19379:1: ( rule__PhysicalLink__Group_5__0 )?
+            int alt94=2;
+            int LA94_0 = input.LA(1);
+
+            if ( (LA94_0==67) ) {
+                alt94=1;
+            }
+            switch (alt94) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19379:2: rule__PhysicalLink__Group_5__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group_5__0_in_rule__PhysicalLink__Group__5__Impl38462);
+                    rule__PhysicalLink__Group_5__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getPhysicalLinkAccess().getGroup_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__5__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19389:1: rule__PhysicalLink__Group__6 : rule__PhysicalLink__Group__6__Impl rule__PhysicalLink__Group__7 ;
+    public final void rule__PhysicalLink__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19393:1: ( rule__PhysicalLink__Group__6__Impl rule__PhysicalLink__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19394:2: rule__PhysicalLink__Group__6__Impl rule__PhysicalLink__Group__7
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__6__Impl_in_rule__PhysicalLink__Group__638493);
+            rule__PhysicalLink__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__7_in_rule__PhysicalLink__Group__638496);
+            rule__PhysicalLink__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__6"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19401:1: rule__PhysicalLink__Group__6__Impl : ( 'connects' ) ;
+    public final void rule__PhysicalLink__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19405:1: ( ( 'connects' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19406:1: ( 'connects' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19406:1: ( 'connects' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19407:1: 'connects'
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getConnectsKeyword_6()); 
+            match(input,129,FollowSets001.FOLLOW_129_in_rule__PhysicalLink__Group__6__Impl38524); 
+             after(grammarAccess.getPhysicalLinkAccess().getConnectsKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__6__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19420:1: rule__PhysicalLink__Group__7 : rule__PhysicalLink__Group__7__Impl rule__PhysicalLink__Group__8 ;
+    public final void rule__PhysicalLink__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19424:1: ( rule__PhysicalLink__Group__7__Impl rule__PhysicalLink__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19425:2: rule__PhysicalLink__Group__7__Impl rule__PhysicalLink__Group__8
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__7__Impl_in_rule__PhysicalLink__Group__738555);
+            rule__PhysicalLink__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__8_in_rule__PhysicalLink__Group__738558);
+            rule__PhysicalLink__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__7"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19432:1: rule__PhysicalLink__Group__7__Impl : ( '(' ) ;
+    public final void rule__PhysicalLink__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19436:1: ( ( '(' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19437:1: ( '(' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19437:1: ( '(' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19438:1: '('
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getLeftParenthesisKeyword_7()); 
+            match(input,123,FollowSets001.FOLLOW_123_in_rule__PhysicalLink__Group__7__Impl38586); 
+             after(grammarAccess.getPhysicalLinkAccess().getLeftParenthesisKeyword_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__7__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19451:1: rule__PhysicalLink__Group__8 : rule__PhysicalLink__Group__8__Impl rule__PhysicalLink__Group__9 ;
+    public final void rule__PhysicalLink__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19455:1: ( rule__PhysicalLink__Group__8__Impl rule__PhysicalLink__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19456:2: rule__PhysicalLink__Group__8__Impl rule__PhysicalLink__Group__9
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__8__Impl_in_rule__PhysicalLink__Group__838617);
+            rule__PhysicalLink__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__9_in_rule__PhysicalLink__Group__838620);
+            rule__PhysicalLink__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__8"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19463:1: rule__PhysicalLink__Group__8__Impl : ( ( rule__PhysicalLink__ConnectsAssignment_8 ) ) ;
+    public final void rule__PhysicalLink__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19467:1: ( ( ( rule__PhysicalLink__ConnectsAssignment_8 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19468:1: ( ( rule__PhysicalLink__ConnectsAssignment_8 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19468:1: ( ( rule__PhysicalLink__ConnectsAssignment_8 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19469:1: ( rule__PhysicalLink__ConnectsAssignment_8 )
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getConnectsAssignment_8()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19470:1: ( rule__PhysicalLink__ConnectsAssignment_8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19470:2: rule__PhysicalLink__ConnectsAssignment_8
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__ConnectsAssignment_8_in_rule__PhysicalLink__Group__8__Impl38647);
+            rule__PhysicalLink__ConnectsAssignment_8();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalLinkAccess().getConnectsAssignment_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__8__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19480:1: rule__PhysicalLink__Group__9 : rule__PhysicalLink__Group__9__Impl rule__PhysicalLink__Group__10 ;
+    public final void rule__PhysicalLink__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19484:1: ( rule__PhysicalLink__Group__9__Impl rule__PhysicalLink__Group__10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19485:2: rule__PhysicalLink__Group__9__Impl rule__PhysicalLink__Group__10
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__9__Impl_in_rule__PhysicalLink__Group__938677);
+            rule__PhysicalLink__Group__9__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__10_in_rule__PhysicalLink__Group__938680);
+            rule__PhysicalLink__Group__10();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__9"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19492:1: rule__PhysicalLink__Group__9__Impl : ( ( rule__PhysicalLink__Group_9__0 )* ) ;
+    public final void rule__PhysicalLink__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19496:1: ( ( ( rule__PhysicalLink__Group_9__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19497:1: ( ( rule__PhysicalLink__Group_9__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19497:1: ( ( rule__PhysicalLink__Group_9__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19498:1: ( rule__PhysicalLink__Group_9__0 )*
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getGroup_9()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19499:1: ( rule__PhysicalLink__Group_9__0 )*
+            loop95:
+            do {
+                int alt95=2;
+                int LA95_0 = input.LA(1);
+
+                if ( (LA95_0==31) ) {
+                    alt95=1;
+                }
+
+
+                switch (alt95) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19499:2: rule__PhysicalLink__Group_9__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group_9__0_in_rule__PhysicalLink__Group__9__Impl38707);
+            	    rule__PhysicalLink__Group_9__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop95;
+                }
+            } while (true);
+
+             after(grammarAccess.getPhysicalLinkAccess().getGroup_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__9__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19509:1: rule__PhysicalLink__Group__10 : rule__PhysicalLink__Group__10__Impl rule__PhysicalLink__Group__11 ;
+    public final void rule__PhysicalLink__Group__10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19513:1: ( rule__PhysicalLink__Group__10__Impl rule__PhysicalLink__Group__11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19514:2: rule__PhysicalLink__Group__10__Impl rule__PhysicalLink__Group__11
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__10__Impl_in_rule__PhysicalLink__Group__1038738);
+            rule__PhysicalLink__Group__10__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__11_in_rule__PhysicalLink__Group__1038741);
+            rule__PhysicalLink__Group__11();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__10"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__10__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19521:1: rule__PhysicalLink__Group__10__Impl : ( ')' ) ;
+    public final void rule__PhysicalLink__Group__10__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19525:1: ( ( ')' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19526:1: ( ')' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19526:1: ( ')' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19527:1: ')'
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getRightParenthesisKeyword_10()); 
+            match(input,124,FollowSets001.FOLLOW_124_in_rule__PhysicalLink__Group__10__Impl38769); 
+             after(grammarAccess.getPhysicalLinkAccess().getRightParenthesisKeyword_10()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__10__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19540:1: rule__PhysicalLink__Group__11 : rule__PhysicalLink__Group__11__Impl rule__PhysicalLink__Group__12 ;
+    public final void rule__PhysicalLink__Group__11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19544:1: ( rule__PhysicalLink__Group__11__Impl rule__PhysicalLink__Group__12 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19545:2: rule__PhysicalLink__Group__11__Impl rule__PhysicalLink__Group__12
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__11__Impl_in_rule__PhysicalLink__Group__1138800);
+            rule__PhysicalLink__Group__11__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__12_in_rule__PhysicalLink__Group__1138803);
+            rule__PhysicalLink__Group__12();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__11"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__11__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19552:1: rule__PhysicalLink__Group__11__Impl : ( 'performance' ) ;
+    public final void rule__PhysicalLink__Group__11__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19556:1: ( ( 'performance' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19557:1: ( 'performance' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19557:1: ( 'performance' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19558:1: 'performance'
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getPerformanceKeyword_11()); 
+            match(input,122,FollowSets001.FOLLOW_122_in_rule__PhysicalLink__Group__11__Impl38831); 
+             after(grammarAccess.getPhysicalLinkAccess().getPerformanceKeyword_11()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__11__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__12"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19571:1: rule__PhysicalLink__Group__12 : rule__PhysicalLink__Group__12__Impl rule__PhysicalLink__Group__13 ;
+    public final void rule__PhysicalLink__Group__12() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19575:1: ( rule__PhysicalLink__Group__12__Impl rule__PhysicalLink__Group__13 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19576:2: rule__PhysicalLink__Group__12__Impl rule__PhysicalLink__Group__13
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__12__Impl_in_rule__PhysicalLink__Group__1238862);
+            rule__PhysicalLink__Group__12__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__13_in_rule__PhysicalLink__Group__1238865);
+            rule__PhysicalLink__Group__13();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__12"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__12__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19583:1: rule__PhysicalLink__Group__12__Impl : ( ( rule__PhysicalLink__PerformanceAssignment_12 ) ) ;
+    public final void rule__PhysicalLink__Group__12__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19587:1: ( ( ( rule__PhysicalLink__PerformanceAssignment_12 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19588:1: ( ( rule__PhysicalLink__PerformanceAssignment_12 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19588:1: ( ( rule__PhysicalLink__PerformanceAssignment_12 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19589:1: ( rule__PhysicalLink__PerformanceAssignment_12 )
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getPerformanceAssignment_12()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19590:1: ( rule__PhysicalLink__PerformanceAssignment_12 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19590:2: rule__PhysicalLink__PerformanceAssignment_12
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__PerformanceAssignment_12_in_rule__PhysicalLink__Group__12__Impl38892);
+            rule__PhysicalLink__PerformanceAssignment_12();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalLinkAccess().getPerformanceAssignment_12()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__12__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__13"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19600:1: rule__PhysicalLink__Group__13 : rule__PhysicalLink__Group__13__Impl ;
+    public final void rule__PhysicalLink__Group__13() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19604:1: ( rule__PhysicalLink__Group__13__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19605:2: rule__PhysicalLink__Group__13__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group__13__Impl_in_rule__PhysicalLink__Group__1338922);
+            rule__PhysicalLink__Group__13__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__13"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group__13__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19611:1: rule__PhysicalLink__Group__13__Impl : ( '}' ) ;
+    public final void rule__PhysicalLink__Group__13__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19615:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19616:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19616:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19617:1: '}'
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getRightCurlyBracketKeyword_13()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__PhysicalLink__Group__13__Impl38950); 
+             after(grammarAccess.getPhysicalLinkAccess().getRightCurlyBracketKeyword_13()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group__13__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group_5__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19658:1: rule__PhysicalLink__Group_5__0 : rule__PhysicalLink__Group_5__0__Impl rule__PhysicalLink__Group_5__1 ;
+    public final void rule__PhysicalLink__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19662:1: ( rule__PhysicalLink__Group_5__0__Impl rule__PhysicalLink__Group_5__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19663:2: rule__PhysicalLink__Group_5__0__Impl rule__PhysicalLink__Group_5__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group_5__0__Impl_in_rule__PhysicalLink__Group_5__039009);
+            rule__PhysicalLink__Group_5__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group_5__1_in_rule__PhysicalLink__Group_5__039012);
+            rule__PhysicalLink__Group_5__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group_5__0"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group_5__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19670:1: rule__PhysicalLink__Group_5__0__Impl : ( 'alternativeNames' ) ;
+    public final void rule__PhysicalLink__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19674:1: ( ( 'alternativeNames' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19675:1: ( 'alternativeNames' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19675:1: ( 'alternativeNames' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19676:1: 'alternativeNames'
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesKeyword_5_0()); 
+            match(input,67,FollowSets001.FOLLOW_67_in_rule__PhysicalLink__Group_5__0__Impl39040); 
+             after(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesKeyword_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group_5__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19689:1: rule__PhysicalLink__Group_5__1 : rule__PhysicalLink__Group_5__1__Impl rule__PhysicalLink__Group_5__2 ;
+    public final void rule__PhysicalLink__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19693:1: ( rule__PhysicalLink__Group_5__1__Impl rule__PhysicalLink__Group_5__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19694:2: rule__PhysicalLink__Group_5__1__Impl rule__PhysicalLink__Group_5__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group_5__1__Impl_in_rule__PhysicalLink__Group_5__139071);
+            rule__PhysicalLink__Group_5__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group_5__2_in_rule__PhysicalLink__Group_5__139074);
+            rule__PhysicalLink__Group_5__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group_5__1"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group_5__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19701:1: rule__PhysicalLink__Group_5__1__Impl : ( '{' ) ;
+    public final void rule__PhysicalLink__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19705:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19706:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19706:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19707:1: '{'
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getLeftCurlyBracketKeyword_5_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__PhysicalLink__Group_5__1__Impl39102); 
+             after(grammarAccess.getPhysicalLinkAccess().getLeftCurlyBracketKeyword_5_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group_5__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19720:1: rule__PhysicalLink__Group_5__2 : rule__PhysicalLink__Group_5__2__Impl rule__PhysicalLink__Group_5__3 ;
+    public final void rule__PhysicalLink__Group_5__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19724:1: ( rule__PhysicalLink__Group_5__2__Impl rule__PhysicalLink__Group_5__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19725:2: rule__PhysicalLink__Group_5__2__Impl rule__PhysicalLink__Group_5__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group_5__2__Impl_in_rule__PhysicalLink__Group_5__239133);
+            rule__PhysicalLink__Group_5__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group_5__3_in_rule__PhysicalLink__Group_5__239136);
+            rule__PhysicalLink__Group_5__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group_5__2"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group_5__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19732:1: rule__PhysicalLink__Group_5__2__Impl : ( ( rule__PhysicalLink__AlternativeNamesAssignment_5_2 ) ) ;
+    public final void rule__PhysicalLink__Group_5__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19736:1: ( ( ( rule__PhysicalLink__AlternativeNamesAssignment_5_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19737:1: ( ( rule__PhysicalLink__AlternativeNamesAssignment_5_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19737:1: ( ( rule__PhysicalLink__AlternativeNamesAssignment_5_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19738:1: ( rule__PhysicalLink__AlternativeNamesAssignment_5_2 )
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesAssignment_5_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19739:1: ( rule__PhysicalLink__AlternativeNamesAssignment_5_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19739:2: rule__PhysicalLink__AlternativeNamesAssignment_5_2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__AlternativeNamesAssignment_5_2_in_rule__PhysicalLink__Group_5__2__Impl39163);
+            rule__PhysicalLink__AlternativeNamesAssignment_5_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesAssignment_5_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group_5__2__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group_5__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19749:1: rule__PhysicalLink__Group_5__3 : rule__PhysicalLink__Group_5__3__Impl rule__PhysicalLink__Group_5__4 ;
+    public final void rule__PhysicalLink__Group_5__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19753:1: ( rule__PhysicalLink__Group_5__3__Impl rule__PhysicalLink__Group_5__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19754:2: rule__PhysicalLink__Group_5__3__Impl rule__PhysicalLink__Group_5__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group_5__3__Impl_in_rule__PhysicalLink__Group_5__339193);
+            rule__PhysicalLink__Group_5__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group_5__4_in_rule__PhysicalLink__Group_5__339196);
+            rule__PhysicalLink__Group_5__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group_5__3"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group_5__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19761:1: rule__PhysicalLink__Group_5__3__Impl : ( ( rule__PhysicalLink__Group_5_3__0 )* ) ;
+    public final void rule__PhysicalLink__Group_5__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19765:1: ( ( ( rule__PhysicalLink__Group_5_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19766:1: ( ( rule__PhysicalLink__Group_5_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19766:1: ( ( rule__PhysicalLink__Group_5_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19767:1: ( rule__PhysicalLink__Group_5_3__0 )*
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getGroup_5_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19768:1: ( rule__PhysicalLink__Group_5_3__0 )*
+            loop96:
+            do {
+                int alt96=2;
+                int LA96_0 = input.LA(1);
+
+                if ( (LA96_0==31) ) {
+                    alt96=1;
+                }
+
+
+                switch (alt96) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19768:2: rule__PhysicalLink__Group_5_3__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group_5_3__0_in_rule__PhysicalLink__Group_5__3__Impl39223);
+            	    rule__PhysicalLink__Group_5_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop96;
+                }
+            } while (true);
+
+             after(grammarAccess.getPhysicalLinkAccess().getGroup_5_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group_5__3__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group_5__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19778:1: rule__PhysicalLink__Group_5__4 : rule__PhysicalLink__Group_5__4__Impl ;
+    public final void rule__PhysicalLink__Group_5__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19782:1: ( rule__PhysicalLink__Group_5__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19783:2: rule__PhysicalLink__Group_5__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group_5__4__Impl_in_rule__PhysicalLink__Group_5__439254);
+            rule__PhysicalLink__Group_5__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group_5__4"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group_5__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19789:1: rule__PhysicalLink__Group_5__4__Impl : ( '}' ) ;
+    public final void rule__PhysicalLink__Group_5__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19793:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19794:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19794:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19795:1: '}'
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getRightCurlyBracketKeyword_5_4()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__PhysicalLink__Group_5__4__Impl39282); 
+             after(grammarAccess.getPhysicalLinkAccess().getRightCurlyBracketKeyword_5_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group_5__4__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group_5_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19818:1: rule__PhysicalLink__Group_5_3__0 : rule__PhysicalLink__Group_5_3__0__Impl rule__PhysicalLink__Group_5_3__1 ;
+    public final void rule__PhysicalLink__Group_5_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19822:1: ( rule__PhysicalLink__Group_5_3__0__Impl rule__PhysicalLink__Group_5_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19823:2: rule__PhysicalLink__Group_5_3__0__Impl rule__PhysicalLink__Group_5_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group_5_3__0__Impl_in_rule__PhysicalLink__Group_5_3__039323);
+            rule__PhysicalLink__Group_5_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group_5_3__1_in_rule__PhysicalLink__Group_5_3__039326);
+            rule__PhysicalLink__Group_5_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group_5_3__0"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group_5_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19830:1: rule__PhysicalLink__Group_5_3__0__Impl : ( ',' ) ;
+    public final void rule__PhysicalLink__Group_5_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19834:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19835:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19835:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19836:1: ','
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getCommaKeyword_5_3_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__PhysicalLink__Group_5_3__0__Impl39354); 
+             after(grammarAccess.getPhysicalLinkAccess().getCommaKeyword_5_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group_5_3__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group_5_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19849:1: rule__PhysicalLink__Group_5_3__1 : rule__PhysicalLink__Group_5_3__1__Impl ;
+    public final void rule__PhysicalLink__Group_5_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19853:1: ( rule__PhysicalLink__Group_5_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19854:2: rule__PhysicalLink__Group_5_3__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group_5_3__1__Impl_in_rule__PhysicalLink__Group_5_3__139385);
+            rule__PhysicalLink__Group_5_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group_5_3__1"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group_5_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19860:1: rule__PhysicalLink__Group_5_3__1__Impl : ( ( rule__PhysicalLink__AlternativeNamesAssignment_5_3_1 ) ) ;
+    public final void rule__PhysicalLink__Group_5_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19864:1: ( ( ( rule__PhysicalLink__AlternativeNamesAssignment_5_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19865:1: ( ( rule__PhysicalLink__AlternativeNamesAssignment_5_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19865:1: ( ( rule__PhysicalLink__AlternativeNamesAssignment_5_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19866:1: ( rule__PhysicalLink__AlternativeNamesAssignment_5_3_1 )
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesAssignment_5_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19867:1: ( rule__PhysicalLink__AlternativeNamesAssignment_5_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19867:2: rule__PhysicalLink__AlternativeNamesAssignment_5_3_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__AlternativeNamesAssignment_5_3_1_in_rule__PhysicalLink__Group_5_3__1__Impl39412);
+            rule__PhysicalLink__AlternativeNamesAssignment_5_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesAssignment_5_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group_5_3__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group_9__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19881:1: rule__PhysicalLink__Group_9__0 : rule__PhysicalLink__Group_9__0__Impl rule__PhysicalLink__Group_9__1 ;
+    public final void rule__PhysicalLink__Group_9__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19885:1: ( rule__PhysicalLink__Group_9__0__Impl rule__PhysicalLink__Group_9__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19886:2: rule__PhysicalLink__Group_9__0__Impl rule__PhysicalLink__Group_9__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group_9__0__Impl_in_rule__PhysicalLink__Group_9__039446);
+            rule__PhysicalLink__Group_9__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group_9__1_in_rule__PhysicalLink__Group_9__039449);
+            rule__PhysicalLink__Group_9__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group_9__0"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group_9__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19893:1: rule__PhysicalLink__Group_9__0__Impl : ( ',' ) ;
+    public final void rule__PhysicalLink__Group_9__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19897:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19898:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19898:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19899:1: ','
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getCommaKeyword_9_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__PhysicalLink__Group_9__0__Impl39477); 
+             after(grammarAccess.getPhysicalLinkAccess().getCommaKeyword_9_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group_9__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group_9__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19912:1: rule__PhysicalLink__Group_9__1 : rule__PhysicalLink__Group_9__1__Impl ;
+    public final void rule__PhysicalLink__Group_9__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19916:1: ( rule__PhysicalLink__Group_9__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19917:2: rule__PhysicalLink__Group_9__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__Group_9__1__Impl_in_rule__PhysicalLink__Group_9__139508);
+            rule__PhysicalLink__Group_9__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group_9__1"
+
+
+    // $ANTLR start "rule__PhysicalLink__Group_9__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19923:1: rule__PhysicalLink__Group_9__1__Impl : ( ( rule__PhysicalLink__ConnectsAssignment_9_1 ) ) ;
+    public final void rule__PhysicalLink__Group_9__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19927:1: ( ( ( rule__PhysicalLink__ConnectsAssignment_9_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19928:1: ( ( rule__PhysicalLink__ConnectsAssignment_9_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19928:1: ( ( rule__PhysicalLink__ConnectsAssignment_9_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19929:1: ( rule__PhysicalLink__ConnectsAssignment_9_1 )
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getConnectsAssignment_9_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19930:1: ( rule__PhysicalLink__ConnectsAssignment_9_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19930:2: rule__PhysicalLink__ConnectsAssignment_9_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__PhysicalLink__ConnectsAssignment_9_1_in_rule__PhysicalLink__Group_9__1__Impl39535);
+            rule__PhysicalLink__ConnectsAssignment_9_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalLinkAccess().getConnectsAssignment_9_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__Group_9__1__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19944:1: rule__VirtualLink__Group__0 : rule__VirtualLink__Group__0__Impl rule__VirtualLink__Group__1 ;
+    public final void rule__VirtualLink__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19948:1: ( rule__VirtualLink__Group__0__Impl rule__VirtualLink__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19949:2: rule__VirtualLink__Group__0__Impl rule__VirtualLink__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__0__Impl_in_rule__VirtualLink__Group__039569);
+            rule__VirtualLink__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__1_in_rule__VirtualLink__Group__039572);
+            rule__VirtualLink__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__0"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19956:1: rule__VirtualLink__Group__0__Impl : ( 'VirtualLink' ) ;
+    public final void rule__VirtualLink__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19960:1: ( ( 'VirtualLink' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19961:1: ( 'VirtualLink' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19961:1: ( 'VirtualLink' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19962:1: 'VirtualLink'
+            {
+             before(grammarAccess.getVirtualLinkAccess().getVirtualLinkKeyword_0()); 
+            match(input,130,FollowSets001.FOLLOW_130_in_rule__VirtualLink__Group__0__Impl39600); 
+             after(grammarAccess.getVirtualLinkAccess().getVirtualLinkKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__0__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19975:1: rule__VirtualLink__Group__1 : rule__VirtualLink__Group__1__Impl rule__VirtualLink__Group__2 ;
+    public final void rule__VirtualLink__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19979:1: ( rule__VirtualLink__Group__1__Impl rule__VirtualLink__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19980:2: rule__VirtualLink__Group__1__Impl rule__VirtualLink__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__1__Impl_in_rule__VirtualLink__Group__139631);
+            rule__VirtualLink__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__2_in_rule__VirtualLink__Group__139634);
+            rule__VirtualLink__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__1"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19987:1: rule__VirtualLink__Group__1__Impl : ( ( rule__VirtualLink__IdAssignment_1 ) ) ;
+    public final void rule__VirtualLink__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19991:1: ( ( ( rule__VirtualLink__IdAssignment_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19992:1: ( ( rule__VirtualLink__IdAssignment_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19992:1: ( ( rule__VirtualLink__IdAssignment_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19993:1: ( rule__VirtualLink__IdAssignment_1 )
+            {
+             before(grammarAccess.getVirtualLinkAccess().getIdAssignment_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19994:1: ( rule__VirtualLink__IdAssignment_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:19994:2: rule__VirtualLink__IdAssignment_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__IdAssignment_1_in_rule__VirtualLink__Group__1__Impl39661);
+            rule__VirtualLink__IdAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualLinkAccess().getIdAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__1__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20004:1: rule__VirtualLink__Group__2 : rule__VirtualLink__Group__2__Impl rule__VirtualLink__Group__3 ;
+    public final void rule__VirtualLink__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20008:1: ( rule__VirtualLink__Group__2__Impl rule__VirtualLink__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20009:2: rule__VirtualLink__Group__2__Impl rule__VirtualLink__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__2__Impl_in_rule__VirtualLink__Group__239691);
+            rule__VirtualLink__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__3_in_rule__VirtualLink__Group__239694);
+            rule__VirtualLink__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__2"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20016:1: rule__VirtualLink__Group__2__Impl : ( '{' ) ;
+    public final void rule__VirtualLink__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20020:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20021:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20021:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20022:1: '{'
+            {
+             before(grammarAccess.getVirtualLinkAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__VirtualLink__Group__2__Impl39722); 
+             after(grammarAccess.getVirtualLinkAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__2__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20035:1: rule__VirtualLink__Group__3 : rule__VirtualLink__Group__3__Impl rule__VirtualLink__Group__4 ;
+    public final void rule__VirtualLink__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20039:1: ( rule__VirtualLink__Group__3__Impl rule__VirtualLink__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20040:2: rule__VirtualLink__Group__3__Impl rule__VirtualLink__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__3__Impl_in_rule__VirtualLink__Group__339753);
+            rule__VirtualLink__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__4_in_rule__VirtualLink__Group__339756);
+            rule__VirtualLink__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__3"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20047:1: rule__VirtualLink__Group__3__Impl : ( 'name' ) ;
+    public final void rule__VirtualLink__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20051:1: ( ( 'name' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20052:1: ( 'name' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20052:1: ( 'name' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20053:1: 'name'
+            {
+             before(grammarAccess.getVirtualLinkAccess().getNameKeyword_3()); 
+            match(input,65,FollowSets001.FOLLOW_65_in_rule__VirtualLink__Group__3__Impl39784); 
+             after(grammarAccess.getVirtualLinkAccess().getNameKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__3__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20066:1: rule__VirtualLink__Group__4 : rule__VirtualLink__Group__4__Impl rule__VirtualLink__Group__5 ;
+    public final void rule__VirtualLink__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20070:1: ( rule__VirtualLink__Group__4__Impl rule__VirtualLink__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20071:2: rule__VirtualLink__Group__4__Impl rule__VirtualLink__Group__5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__4__Impl_in_rule__VirtualLink__Group__439815);
+            rule__VirtualLink__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__5_in_rule__VirtualLink__Group__439818);
+            rule__VirtualLink__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__4"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20078:1: rule__VirtualLink__Group__4__Impl : ( ( rule__VirtualLink__NameAssignment_4 ) ) ;
+    public final void rule__VirtualLink__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20082:1: ( ( ( rule__VirtualLink__NameAssignment_4 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20083:1: ( ( rule__VirtualLink__NameAssignment_4 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20083:1: ( ( rule__VirtualLink__NameAssignment_4 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20084:1: ( rule__VirtualLink__NameAssignment_4 )
+            {
+             before(grammarAccess.getVirtualLinkAccess().getNameAssignment_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20085:1: ( rule__VirtualLink__NameAssignment_4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20085:2: rule__VirtualLink__NameAssignment_4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__NameAssignment_4_in_rule__VirtualLink__Group__4__Impl39845);
+            rule__VirtualLink__NameAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualLinkAccess().getNameAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__4__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20095:1: rule__VirtualLink__Group__5 : rule__VirtualLink__Group__5__Impl rule__VirtualLink__Group__6 ;
+    public final void rule__VirtualLink__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20099:1: ( rule__VirtualLink__Group__5__Impl rule__VirtualLink__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20100:2: rule__VirtualLink__Group__5__Impl rule__VirtualLink__Group__6
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__5__Impl_in_rule__VirtualLink__Group__539875);
+            rule__VirtualLink__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__6_in_rule__VirtualLink__Group__539878);
+            rule__VirtualLink__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__5"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20107:1: rule__VirtualLink__Group__5__Impl : ( ( rule__VirtualLink__Group_5__0 )? ) ;
+    public final void rule__VirtualLink__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20111:1: ( ( ( rule__VirtualLink__Group_5__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20112:1: ( ( rule__VirtualLink__Group_5__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20112:1: ( ( rule__VirtualLink__Group_5__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20113:1: ( rule__VirtualLink__Group_5__0 )?
+            {
+             before(grammarAccess.getVirtualLinkAccess().getGroup_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20114:1: ( rule__VirtualLink__Group_5__0 )?
+            int alt97=2;
+            int LA97_0 = input.LA(1);
+
+            if ( (LA97_0==67) ) {
+                alt97=1;
+            }
+            switch (alt97) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20114:2: rule__VirtualLink__Group_5__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group_5__0_in_rule__VirtualLink__Group__5__Impl39905);
+                    rule__VirtualLink__Group_5__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getVirtualLinkAccess().getGroup_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__5__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20124:1: rule__VirtualLink__Group__6 : rule__VirtualLink__Group__6__Impl rule__VirtualLink__Group__7 ;
+    public final void rule__VirtualLink__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20128:1: ( rule__VirtualLink__Group__6__Impl rule__VirtualLink__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20129:2: rule__VirtualLink__Group__6__Impl rule__VirtualLink__Group__7
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__6__Impl_in_rule__VirtualLink__Group__639936);
+            rule__VirtualLink__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__7_in_rule__VirtualLink__Group__639939);
+            rule__VirtualLink__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__6"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20136:1: rule__VirtualLink__Group__6__Impl : ( 'connects' ) ;
+    public final void rule__VirtualLink__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20140:1: ( ( 'connects' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20141:1: ( 'connects' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20141:1: ( 'connects' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20142:1: 'connects'
+            {
+             before(grammarAccess.getVirtualLinkAccess().getConnectsKeyword_6()); 
+            match(input,129,FollowSets001.FOLLOW_129_in_rule__VirtualLink__Group__6__Impl39967); 
+             after(grammarAccess.getVirtualLinkAccess().getConnectsKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__6__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20155:1: rule__VirtualLink__Group__7 : rule__VirtualLink__Group__7__Impl rule__VirtualLink__Group__8 ;
+    public final void rule__VirtualLink__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20159:1: ( rule__VirtualLink__Group__7__Impl rule__VirtualLink__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20160:2: rule__VirtualLink__Group__7__Impl rule__VirtualLink__Group__8
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__7__Impl_in_rule__VirtualLink__Group__739998);
+            rule__VirtualLink__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__8_in_rule__VirtualLink__Group__740001);
+            rule__VirtualLink__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__7"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20167:1: rule__VirtualLink__Group__7__Impl : ( '(' ) ;
+    public final void rule__VirtualLink__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20171:1: ( ( '(' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20172:1: ( '(' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20172:1: ( '(' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20173:1: '('
+            {
+             before(grammarAccess.getVirtualLinkAccess().getLeftParenthesisKeyword_7()); 
+            match(input,123,FollowSets001.FOLLOW_123_in_rule__VirtualLink__Group__7__Impl40029); 
+             after(grammarAccess.getVirtualLinkAccess().getLeftParenthesisKeyword_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__7__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20186:1: rule__VirtualLink__Group__8 : rule__VirtualLink__Group__8__Impl rule__VirtualLink__Group__9 ;
+    public final void rule__VirtualLink__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20190:1: ( rule__VirtualLink__Group__8__Impl rule__VirtualLink__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20191:2: rule__VirtualLink__Group__8__Impl rule__VirtualLink__Group__9
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__8__Impl_in_rule__VirtualLink__Group__840060);
+            rule__VirtualLink__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__9_in_rule__VirtualLink__Group__840063);
+            rule__VirtualLink__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__8"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20198:1: rule__VirtualLink__Group__8__Impl : ( ( rule__VirtualLink__ConnectsAssignment_8 ) ) ;
+    public final void rule__VirtualLink__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20202:1: ( ( ( rule__VirtualLink__ConnectsAssignment_8 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20203:1: ( ( rule__VirtualLink__ConnectsAssignment_8 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20203:1: ( ( rule__VirtualLink__ConnectsAssignment_8 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20204:1: ( rule__VirtualLink__ConnectsAssignment_8 )
+            {
+             before(grammarAccess.getVirtualLinkAccess().getConnectsAssignment_8()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20205:1: ( rule__VirtualLink__ConnectsAssignment_8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20205:2: rule__VirtualLink__ConnectsAssignment_8
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__ConnectsAssignment_8_in_rule__VirtualLink__Group__8__Impl40090);
+            rule__VirtualLink__ConnectsAssignment_8();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualLinkAccess().getConnectsAssignment_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__8__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20215:1: rule__VirtualLink__Group__9 : rule__VirtualLink__Group__9__Impl rule__VirtualLink__Group__10 ;
+    public final void rule__VirtualLink__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20219:1: ( rule__VirtualLink__Group__9__Impl rule__VirtualLink__Group__10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20220:2: rule__VirtualLink__Group__9__Impl rule__VirtualLink__Group__10
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__9__Impl_in_rule__VirtualLink__Group__940120);
+            rule__VirtualLink__Group__9__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__10_in_rule__VirtualLink__Group__940123);
+            rule__VirtualLink__Group__10();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__9"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20227:1: rule__VirtualLink__Group__9__Impl : ( ( rule__VirtualLink__Group_9__0 )* ) ;
+    public final void rule__VirtualLink__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20231:1: ( ( ( rule__VirtualLink__Group_9__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20232:1: ( ( rule__VirtualLink__Group_9__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20232:1: ( ( rule__VirtualLink__Group_9__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20233:1: ( rule__VirtualLink__Group_9__0 )*
+            {
+             before(grammarAccess.getVirtualLinkAccess().getGroup_9()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20234:1: ( rule__VirtualLink__Group_9__0 )*
+            loop98:
+            do {
+                int alt98=2;
+                int LA98_0 = input.LA(1);
+
+                if ( (LA98_0==31) ) {
+                    alt98=1;
+                }
+
+
+                switch (alt98) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20234:2: rule__VirtualLink__Group_9__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group_9__0_in_rule__VirtualLink__Group__9__Impl40150);
+            	    rule__VirtualLink__Group_9__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop98;
+                }
+            } while (true);
+
+             after(grammarAccess.getVirtualLinkAccess().getGroup_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__9__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20244:1: rule__VirtualLink__Group__10 : rule__VirtualLink__Group__10__Impl rule__VirtualLink__Group__11 ;
+    public final void rule__VirtualLink__Group__10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20248:1: ( rule__VirtualLink__Group__10__Impl rule__VirtualLink__Group__11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20249:2: rule__VirtualLink__Group__10__Impl rule__VirtualLink__Group__11
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__10__Impl_in_rule__VirtualLink__Group__1040181);
+            rule__VirtualLink__Group__10__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__11_in_rule__VirtualLink__Group__1040184);
+            rule__VirtualLink__Group__11();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__10"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__10__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20256:1: rule__VirtualLink__Group__10__Impl : ( ')' ) ;
+    public final void rule__VirtualLink__Group__10__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20260:1: ( ( ')' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20261:1: ( ')' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20261:1: ( ')' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20262:1: ')'
+            {
+             before(grammarAccess.getVirtualLinkAccess().getRightParenthesisKeyword_10()); 
+            match(input,124,FollowSets001.FOLLOW_124_in_rule__VirtualLink__Group__10__Impl40212); 
+             after(grammarAccess.getVirtualLinkAccess().getRightParenthesisKeyword_10()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__10__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20275:1: rule__VirtualLink__Group__11 : rule__VirtualLink__Group__11__Impl rule__VirtualLink__Group__12 ;
+    public final void rule__VirtualLink__Group__11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20279:1: ( rule__VirtualLink__Group__11__Impl rule__VirtualLink__Group__12 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20280:2: rule__VirtualLink__Group__11__Impl rule__VirtualLink__Group__12
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__11__Impl_in_rule__VirtualLink__Group__1140243);
+            rule__VirtualLink__Group__11__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__12_in_rule__VirtualLink__Group__1140246);
+            rule__VirtualLink__Group__12();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__11"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__11__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20287:1: rule__VirtualLink__Group__11__Impl : ( 'performance' ) ;
+    public final void rule__VirtualLink__Group__11__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20291:1: ( ( 'performance' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20292:1: ( 'performance' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20292:1: ( 'performance' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20293:1: 'performance'
+            {
+             before(grammarAccess.getVirtualLinkAccess().getPerformanceKeyword_11()); 
+            match(input,122,FollowSets001.FOLLOW_122_in_rule__VirtualLink__Group__11__Impl40274); 
+             after(grammarAccess.getVirtualLinkAccess().getPerformanceKeyword_11()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__11__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__12"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20306:1: rule__VirtualLink__Group__12 : rule__VirtualLink__Group__12__Impl rule__VirtualLink__Group__13 ;
+    public final void rule__VirtualLink__Group__12() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20310:1: ( rule__VirtualLink__Group__12__Impl rule__VirtualLink__Group__13 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20311:2: rule__VirtualLink__Group__12__Impl rule__VirtualLink__Group__13
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__12__Impl_in_rule__VirtualLink__Group__1240305);
+            rule__VirtualLink__Group__12__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__13_in_rule__VirtualLink__Group__1240308);
+            rule__VirtualLink__Group__13();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__12"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__12__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20318:1: rule__VirtualLink__Group__12__Impl : ( ( rule__VirtualLink__PerformanceAssignment_12 ) ) ;
+    public final void rule__VirtualLink__Group__12__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20322:1: ( ( ( rule__VirtualLink__PerformanceAssignment_12 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20323:1: ( ( rule__VirtualLink__PerformanceAssignment_12 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20323:1: ( ( rule__VirtualLink__PerformanceAssignment_12 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20324:1: ( rule__VirtualLink__PerformanceAssignment_12 )
+            {
+             before(grammarAccess.getVirtualLinkAccess().getPerformanceAssignment_12()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20325:1: ( rule__VirtualLink__PerformanceAssignment_12 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20325:2: rule__VirtualLink__PerformanceAssignment_12
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__PerformanceAssignment_12_in_rule__VirtualLink__Group__12__Impl40335);
+            rule__VirtualLink__PerformanceAssignment_12();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualLinkAccess().getPerformanceAssignment_12()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__12__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__13"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20335:1: rule__VirtualLink__Group__13 : rule__VirtualLink__Group__13__Impl ;
+    public final void rule__VirtualLink__Group__13() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20339:1: ( rule__VirtualLink__Group__13__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20340:2: rule__VirtualLink__Group__13__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group__13__Impl_in_rule__VirtualLink__Group__1340365);
+            rule__VirtualLink__Group__13__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__13"
+
+
+    // $ANTLR start "rule__VirtualLink__Group__13__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20346:1: rule__VirtualLink__Group__13__Impl : ( '}' ) ;
+    public final void rule__VirtualLink__Group__13__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20350:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20351:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20351:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20352:1: '}'
+            {
+             before(grammarAccess.getVirtualLinkAccess().getRightCurlyBracketKeyword_13()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__VirtualLink__Group__13__Impl40393); 
+             after(grammarAccess.getVirtualLinkAccess().getRightCurlyBracketKeyword_13()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group__13__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group_5__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20393:1: rule__VirtualLink__Group_5__0 : rule__VirtualLink__Group_5__0__Impl rule__VirtualLink__Group_5__1 ;
+    public final void rule__VirtualLink__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20397:1: ( rule__VirtualLink__Group_5__0__Impl rule__VirtualLink__Group_5__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20398:2: rule__VirtualLink__Group_5__0__Impl rule__VirtualLink__Group_5__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group_5__0__Impl_in_rule__VirtualLink__Group_5__040452);
+            rule__VirtualLink__Group_5__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group_5__1_in_rule__VirtualLink__Group_5__040455);
+            rule__VirtualLink__Group_5__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group_5__0"
+
+
+    // $ANTLR start "rule__VirtualLink__Group_5__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20405:1: rule__VirtualLink__Group_5__0__Impl : ( 'alternativeNames' ) ;
+    public final void rule__VirtualLink__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20409:1: ( ( 'alternativeNames' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20410:1: ( 'alternativeNames' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20410:1: ( 'alternativeNames' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20411:1: 'alternativeNames'
+            {
+             before(grammarAccess.getVirtualLinkAccess().getAlternativeNamesKeyword_5_0()); 
+            match(input,67,FollowSets001.FOLLOW_67_in_rule__VirtualLink__Group_5__0__Impl40483); 
+             after(grammarAccess.getVirtualLinkAccess().getAlternativeNamesKeyword_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group_5__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20424:1: rule__VirtualLink__Group_5__1 : rule__VirtualLink__Group_5__1__Impl rule__VirtualLink__Group_5__2 ;
+    public final void rule__VirtualLink__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20428:1: ( rule__VirtualLink__Group_5__1__Impl rule__VirtualLink__Group_5__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20429:2: rule__VirtualLink__Group_5__1__Impl rule__VirtualLink__Group_5__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group_5__1__Impl_in_rule__VirtualLink__Group_5__140514);
+            rule__VirtualLink__Group_5__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group_5__2_in_rule__VirtualLink__Group_5__140517);
+            rule__VirtualLink__Group_5__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group_5__1"
+
+
+    // $ANTLR start "rule__VirtualLink__Group_5__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20436:1: rule__VirtualLink__Group_5__1__Impl : ( '{' ) ;
+    public final void rule__VirtualLink__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20440:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20441:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20441:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20442:1: '{'
+            {
+             before(grammarAccess.getVirtualLinkAccess().getLeftCurlyBracketKeyword_5_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__VirtualLink__Group_5__1__Impl40545); 
+             after(grammarAccess.getVirtualLinkAccess().getLeftCurlyBracketKeyword_5_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group_5__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20455:1: rule__VirtualLink__Group_5__2 : rule__VirtualLink__Group_5__2__Impl rule__VirtualLink__Group_5__3 ;
+    public final void rule__VirtualLink__Group_5__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20459:1: ( rule__VirtualLink__Group_5__2__Impl rule__VirtualLink__Group_5__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20460:2: rule__VirtualLink__Group_5__2__Impl rule__VirtualLink__Group_5__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group_5__2__Impl_in_rule__VirtualLink__Group_5__240576);
+            rule__VirtualLink__Group_5__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group_5__3_in_rule__VirtualLink__Group_5__240579);
+            rule__VirtualLink__Group_5__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group_5__2"
+
+
+    // $ANTLR start "rule__VirtualLink__Group_5__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20467:1: rule__VirtualLink__Group_5__2__Impl : ( ( rule__VirtualLink__AlternativeNamesAssignment_5_2 ) ) ;
+    public final void rule__VirtualLink__Group_5__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20471:1: ( ( ( rule__VirtualLink__AlternativeNamesAssignment_5_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20472:1: ( ( rule__VirtualLink__AlternativeNamesAssignment_5_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20472:1: ( ( rule__VirtualLink__AlternativeNamesAssignment_5_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20473:1: ( rule__VirtualLink__AlternativeNamesAssignment_5_2 )
+            {
+             before(grammarAccess.getVirtualLinkAccess().getAlternativeNamesAssignment_5_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20474:1: ( rule__VirtualLink__AlternativeNamesAssignment_5_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20474:2: rule__VirtualLink__AlternativeNamesAssignment_5_2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__AlternativeNamesAssignment_5_2_in_rule__VirtualLink__Group_5__2__Impl40606);
+            rule__VirtualLink__AlternativeNamesAssignment_5_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualLinkAccess().getAlternativeNamesAssignment_5_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group_5__2__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group_5__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20484:1: rule__VirtualLink__Group_5__3 : rule__VirtualLink__Group_5__3__Impl rule__VirtualLink__Group_5__4 ;
+    public final void rule__VirtualLink__Group_5__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20488:1: ( rule__VirtualLink__Group_5__3__Impl rule__VirtualLink__Group_5__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20489:2: rule__VirtualLink__Group_5__3__Impl rule__VirtualLink__Group_5__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group_5__3__Impl_in_rule__VirtualLink__Group_5__340636);
+            rule__VirtualLink__Group_5__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group_5__4_in_rule__VirtualLink__Group_5__340639);
+            rule__VirtualLink__Group_5__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group_5__3"
+
+
+    // $ANTLR start "rule__VirtualLink__Group_5__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20496:1: rule__VirtualLink__Group_5__3__Impl : ( ( rule__VirtualLink__Group_5_3__0 )* ) ;
+    public final void rule__VirtualLink__Group_5__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20500:1: ( ( ( rule__VirtualLink__Group_5_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20501:1: ( ( rule__VirtualLink__Group_5_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20501:1: ( ( rule__VirtualLink__Group_5_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20502:1: ( rule__VirtualLink__Group_5_3__0 )*
+            {
+             before(grammarAccess.getVirtualLinkAccess().getGroup_5_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20503:1: ( rule__VirtualLink__Group_5_3__0 )*
+            loop99:
+            do {
+                int alt99=2;
+                int LA99_0 = input.LA(1);
+
+                if ( (LA99_0==31) ) {
+                    alt99=1;
+                }
+
+
+                switch (alt99) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20503:2: rule__VirtualLink__Group_5_3__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group_5_3__0_in_rule__VirtualLink__Group_5__3__Impl40666);
+            	    rule__VirtualLink__Group_5_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop99;
+                }
+            } while (true);
+
+             after(grammarAccess.getVirtualLinkAccess().getGroup_5_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group_5__3__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group_5__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20513:1: rule__VirtualLink__Group_5__4 : rule__VirtualLink__Group_5__4__Impl ;
+    public final void rule__VirtualLink__Group_5__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20517:1: ( rule__VirtualLink__Group_5__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20518:2: rule__VirtualLink__Group_5__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group_5__4__Impl_in_rule__VirtualLink__Group_5__440697);
+            rule__VirtualLink__Group_5__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group_5__4"
+
+
+    // $ANTLR start "rule__VirtualLink__Group_5__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20524:1: rule__VirtualLink__Group_5__4__Impl : ( '}' ) ;
+    public final void rule__VirtualLink__Group_5__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20528:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20529:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20529:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20530:1: '}'
+            {
+             before(grammarAccess.getVirtualLinkAccess().getRightCurlyBracketKeyword_5_4()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__VirtualLink__Group_5__4__Impl40725); 
+             after(grammarAccess.getVirtualLinkAccess().getRightCurlyBracketKeyword_5_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group_5__4__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group_5_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20553:1: rule__VirtualLink__Group_5_3__0 : rule__VirtualLink__Group_5_3__0__Impl rule__VirtualLink__Group_5_3__1 ;
+    public final void rule__VirtualLink__Group_5_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20557:1: ( rule__VirtualLink__Group_5_3__0__Impl rule__VirtualLink__Group_5_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20558:2: rule__VirtualLink__Group_5_3__0__Impl rule__VirtualLink__Group_5_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group_5_3__0__Impl_in_rule__VirtualLink__Group_5_3__040766);
+            rule__VirtualLink__Group_5_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group_5_3__1_in_rule__VirtualLink__Group_5_3__040769);
+            rule__VirtualLink__Group_5_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group_5_3__0"
+
+
+    // $ANTLR start "rule__VirtualLink__Group_5_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20565:1: rule__VirtualLink__Group_5_3__0__Impl : ( ',' ) ;
+    public final void rule__VirtualLink__Group_5_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20569:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20570:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20570:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20571:1: ','
+            {
+             before(grammarAccess.getVirtualLinkAccess().getCommaKeyword_5_3_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__VirtualLink__Group_5_3__0__Impl40797); 
+             after(grammarAccess.getVirtualLinkAccess().getCommaKeyword_5_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group_5_3__0__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group_5_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20584:1: rule__VirtualLink__Group_5_3__1 : rule__VirtualLink__Group_5_3__1__Impl ;
+    public final void rule__VirtualLink__Group_5_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20588:1: ( rule__VirtualLink__Group_5_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20589:2: rule__VirtualLink__Group_5_3__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group_5_3__1__Impl_in_rule__VirtualLink__Group_5_3__140828);
+            rule__VirtualLink__Group_5_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group_5_3__1"
+
+
+    // $ANTLR start "rule__VirtualLink__Group_5_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20595:1: rule__VirtualLink__Group_5_3__1__Impl : ( ( rule__VirtualLink__AlternativeNamesAssignment_5_3_1 ) ) ;
+    public final void rule__VirtualLink__Group_5_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20599:1: ( ( ( rule__VirtualLink__AlternativeNamesAssignment_5_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20600:1: ( ( rule__VirtualLink__AlternativeNamesAssignment_5_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20600:1: ( ( rule__VirtualLink__AlternativeNamesAssignment_5_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20601:1: ( rule__VirtualLink__AlternativeNamesAssignment_5_3_1 )
+            {
+             before(grammarAccess.getVirtualLinkAccess().getAlternativeNamesAssignment_5_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20602:1: ( rule__VirtualLink__AlternativeNamesAssignment_5_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20602:2: rule__VirtualLink__AlternativeNamesAssignment_5_3_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__AlternativeNamesAssignment_5_3_1_in_rule__VirtualLink__Group_5_3__1__Impl40855);
+            rule__VirtualLink__AlternativeNamesAssignment_5_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualLinkAccess().getAlternativeNamesAssignment_5_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group_5_3__1__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group_9__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20616:1: rule__VirtualLink__Group_9__0 : rule__VirtualLink__Group_9__0__Impl rule__VirtualLink__Group_9__1 ;
+    public final void rule__VirtualLink__Group_9__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20620:1: ( rule__VirtualLink__Group_9__0__Impl rule__VirtualLink__Group_9__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20621:2: rule__VirtualLink__Group_9__0__Impl rule__VirtualLink__Group_9__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group_9__0__Impl_in_rule__VirtualLink__Group_9__040889);
+            rule__VirtualLink__Group_9__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group_9__1_in_rule__VirtualLink__Group_9__040892);
+            rule__VirtualLink__Group_9__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group_9__0"
+
+
+    // $ANTLR start "rule__VirtualLink__Group_9__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20628:1: rule__VirtualLink__Group_9__0__Impl : ( ',' ) ;
+    public final void rule__VirtualLink__Group_9__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20632:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20633:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20633:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20634:1: ','
+            {
+             before(grammarAccess.getVirtualLinkAccess().getCommaKeyword_9_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__VirtualLink__Group_9__0__Impl40920); 
+             after(grammarAccess.getVirtualLinkAccess().getCommaKeyword_9_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group_9__0__Impl"
+
+
+    // $ANTLR start "rule__VirtualLink__Group_9__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20647:1: rule__VirtualLink__Group_9__1 : rule__VirtualLink__Group_9__1__Impl ;
+    public final void rule__VirtualLink__Group_9__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20651:1: ( rule__VirtualLink__Group_9__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20652:2: rule__VirtualLink__Group_9__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__Group_9__1__Impl_in_rule__VirtualLink__Group_9__140951);
+            rule__VirtualLink__Group_9__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group_9__1"
+
+
+    // $ANTLR start "rule__VirtualLink__Group_9__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20658:1: rule__VirtualLink__Group_9__1__Impl : ( ( rule__VirtualLink__ConnectsAssignment_9_1 ) ) ;
+    public final void rule__VirtualLink__Group_9__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20662:1: ( ( ( rule__VirtualLink__ConnectsAssignment_9_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20663:1: ( ( rule__VirtualLink__ConnectsAssignment_9_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20663:1: ( ( rule__VirtualLink__ConnectsAssignment_9_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20664:1: ( rule__VirtualLink__ConnectsAssignment_9_1 )
+            {
+             before(grammarAccess.getVirtualLinkAccess().getConnectsAssignment_9_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20665:1: ( rule__VirtualLink__ConnectsAssignment_9_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20665:2: rule__VirtualLink__ConnectsAssignment_9_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__VirtualLink__ConnectsAssignment_9_1_in_rule__VirtualLink__Group_9__1__Impl40978);
+            rule__VirtualLink__ConnectsAssignment_9_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualLinkAccess().getConnectsAssignment_9_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__Group_9__1__Impl"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20679:1: rule__ProtocolsRepository__Group__0 : rule__ProtocolsRepository__Group__0__Impl rule__ProtocolsRepository__Group__1 ;
+    public final void rule__ProtocolsRepository__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20683:1: ( rule__ProtocolsRepository__Group__0__Impl rule__ProtocolsRepository__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20684:2: rule__ProtocolsRepository__Group__0__Impl rule__ProtocolsRepository__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group__0__Impl_in_rule__ProtocolsRepository__Group__041012);
+            rule__ProtocolsRepository__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group__1_in_rule__ProtocolsRepository__Group__041015);
+            rule__ProtocolsRepository__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group__0"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20691:1: rule__ProtocolsRepository__Group__0__Impl : ( 'ProtocolsRepository' ) ;
+    public final void rule__ProtocolsRepository__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20695:1: ( ( 'ProtocolsRepository' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20696:1: ( 'ProtocolsRepository' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20696:1: ( 'ProtocolsRepository' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20697:1: 'ProtocolsRepository'
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getProtocolsRepositoryKeyword_0()); 
+            match(input,131,FollowSets001.FOLLOW_131_in_rule__ProtocolsRepository__Group__0__Impl41043); 
+             after(grammarAccess.getProtocolsRepositoryAccess().getProtocolsRepositoryKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20710:1: rule__ProtocolsRepository__Group__1 : rule__ProtocolsRepository__Group__1__Impl rule__ProtocolsRepository__Group__2 ;
+    public final void rule__ProtocolsRepository__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20714:1: ( rule__ProtocolsRepository__Group__1__Impl rule__ProtocolsRepository__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20715:2: rule__ProtocolsRepository__Group__1__Impl rule__ProtocolsRepository__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group__1__Impl_in_rule__ProtocolsRepository__Group__141074);
+            rule__ProtocolsRepository__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group__2_in_rule__ProtocolsRepository__Group__141077);
+            rule__ProtocolsRepository__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group__1"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20722:1: rule__ProtocolsRepository__Group__1__Impl : ( '{' ) ;
+    public final void rule__ProtocolsRepository__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20726:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20727:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20727:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20728:1: '{'
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__ProtocolsRepository__Group__1__Impl41105); 
+             after(grammarAccess.getProtocolsRepositoryAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20741:1: rule__ProtocolsRepository__Group__2 : rule__ProtocolsRepository__Group__2__Impl rule__ProtocolsRepository__Group__3 ;
+    public final void rule__ProtocolsRepository__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20745:1: ( rule__ProtocolsRepository__Group__2__Impl rule__ProtocolsRepository__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20746:2: rule__ProtocolsRepository__Group__2__Impl rule__ProtocolsRepository__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group__2__Impl_in_rule__ProtocolsRepository__Group__241136);
+            rule__ProtocolsRepository__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group__3_in_rule__ProtocolsRepository__Group__241139);
+            rule__ProtocolsRepository__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group__2"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20753:1: rule__ProtocolsRepository__Group__2__Impl : ( ( rule__ProtocolsRepository__Group_2__0 )? ) ;
+    public final void rule__ProtocolsRepository__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20757:1: ( ( ( rule__ProtocolsRepository__Group_2__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20758:1: ( ( rule__ProtocolsRepository__Group_2__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20758:1: ( ( rule__ProtocolsRepository__Group_2__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20759:1: ( rule__ProtocolsRepository__Group_2__0 )?
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getGroup_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20760:1: ( rule__ProtocolsRepository__Group_2__0 )?
+            int alt100=2;
+            int LA100_0 = input.LA(1);
+
+            if ( (LA100_0==133) ) {
+                alt100=1;
+            }
+            switch (alt100) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20760:2: rule__ProtocolsRepository__Group_2__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group_2__0_in_rule__ProtocolsRepository__Group__2__Impl41166);
+                    rule__ProtocolsRepository__Group_2__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getProtocolsRepositoryAccess().getGroup_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20770:1: rule__ProtocolsRepository__Group__3 : rule__ProtocolsRepository__Group__3__Impl rule__ProtocolsRepository__Group__4 ;
+    public final void rule__ProtocolsRepository__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20774:1: ( rule__ProtocolsRepository__Group__3__Impl rule__ProtocolsRepository__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20775:2: rule__ProtocolsRepository__Group__3__Impl rule__ProtocolsRepository__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group__3__Impl_in_rule__ProtocolsRepository__Group__341197);
+            rule__ProtocolsRepository__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group__4_in_rule__ProtocolsRepository__Group__341200);
+            rule__ProtocolsRepository__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group__3"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20782:1: rule__ProtocolsRepository__Group__3__Impl : ( 'protocols' ) ;
+    public final void rule__ProtocolsRepository__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20786:1: ( ( 'protocols' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20787:1: ( 'protocols' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20787:1: ( 'protocols' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20788:1: 'protocols'
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getProtocolsKeyword_3()); 
+            match(input,132,FollowSets001.FOLLOW_132_in_rule__ProtocolsRepository__Group__3__Impl41228); 
+             after(grammarAccess.getProtocolsRepositoryAccess().getProtocolsKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20801:1: rule__ProtocolsRepository__Group__4 : rule__ProtocolsRepository__Group__4__Impl rule__ProtocolsRepository__Group__5 ;
+    public final void rule__ProtocolsRepository__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20805:1: ( rule__ProtocolsRepository__Group__4__Impl rule__ProtocolsRepository__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20806:2: rule__ProtocolsRepository__Group__4__Impl rule__ProtocolsRepository__Group__5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group__4__Impl_in_rule__ProtocolsRepository__Group__441259);
+            rule__ProtocolsRepository__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group__5_in_rule__ProtocolsRepository__Group__441262);
+            rule__ProtocolsRepository__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group__4"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20813:1: rule__ProtocolsRepository__Group__4__Impl : ( '{' ) ;
+    public final void rule__ProtocolsRepository__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20817:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20818:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20818:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20819:1: '{'
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getLeftCurlyBracketKeyword_4()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__ProtocolsRepository__Group__4__Impl41290); 
+             after(grammarAccess.getProtocolsRepositoryAccess().getLeftCurlyBracketKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20832:1: rule__ProtocolsRepository__Group__5 : rule__ProtocolsRepository__Group__5__Impl rule__ProtocolsRepository__Group__6 ;
+    public final void rule__ProtocolsRepository__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20836:1: ( rule__ProtocolsRepository__Group__5__Impl rule__ProtocolsRepository__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20837:2: rule__ProtocolsRepository__Group__5__Impl rule__ProtocolsRepository__Group__6
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group__5__Impl_in_rule__ProtocolsRepository__Group__541321);
+            rule__ProtocolsRepository__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group__6_in_rule__ProtocolsRepository__Group__541324);
+            rule__ProtocolsRepository__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group__5"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20844:1: rule__ProtocolsRepository__Group__5__Impl : ( ( rule__ProtocolsRepository__ProtocolsAssignment_5 ) ) ;
+    public final void rule__ProtocolsRepository__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20848:1: ( ( ( rule__ProtocolsRepository__ProtocolsAssignment_5 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20849:1: ( ( rule__ProtocolsRepository__ProtocolsAssignment_5 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20849:1: ( ( rule__ProtocolsRepository__ProtocolsAssignment_5 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20850:1: ( rule__ProtocolsRepository__ProtocolsAssignment_5 )
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getProtocolsAssignment_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20851:1: ( rule__ProtocolsRepository__ProtocolsAssignment_5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20851:2: rule__ProtocolsRepository__ProtocolsAssignment_5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__ProtocolsAssignment_5_in_rule__ProtocolsRepository__Group__5__Impl41351);
+            rule__ProtocolsRepository__ProtocolsAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProtocolsRepositoryAccess().getProtocolsAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group__5__Impl"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20861:1: rule__ProtocolsRepository__Group__6 : rule__ProtocolsRepository__Group__6__Impl rule__ProtocolsRepository__Group__7 ;
+    public final void rule__ProtocolsRepository__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20865:1: ( rule__ProtocolsRepository__Group__6__Impl rule__ProtocolsRepository__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20866:2: rule__ProtocolsRepository__Group__6__Impl rule__ProtocolsRepository__Group__7
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group__6__Impl_in_rule__ProtocolsRepository__Group__641381);
+            rule__ProtocolsRepository__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group__7_in_rule__ProtocolsRepository__Group__641384);
+            rule__ProtocolsRepository__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group__6"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20873:1: rule__ProtocolsRepository__Group__6__Impl : ( ( rule__ProtocolsRepository__Group_6__0 )* ) ;
+    public final void rule__ProtocolsRepository__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20877:1: ( ( ( rule__ProtocolsRepository__Group_6__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20878:1: ( ( rule__ProtocolsRepository__Group_6__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20878:1: ( ( rule__ProtocolsRepository__Group_6__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20879:1: ( rule__ProtocolsRepository__Group_6__0 )*
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getGroup_6()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20880:1: ( rule__ProtocolsRepository__Group_6__0 )*
+            loop101:
+            do {
+                int alt101=2;
+                int LA101_0 = input.LA(1);
+
+                if ( (LA101_0==31) ) {
+                    alt101=1;
+                }
+
+
+                switch (alt101) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20880:2: rule__ProtocolsRepository__Group_6__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group_6__0_in_rule__ProtocolsRepository__Group__6__Impl41411);
+            	    rule__ProtocolsRepository__Group_6__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop101;
+                }
+            } while (true);
+
+             after(grammarAccess.getProtocolsRepositoryAccess().getGroup_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group__6__Impl"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20890:1: rule__ProtocolsRepository__Group__7 : rule__ProtocolsRepository__Group__7__Impl rule__ProtocolsRepository__Group__8 ;
+    public final void rule__ProtocolsRepository__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20894:1: ( rule__ProtocolsRepository__Group__7__Impl rule__ProtocolsRepository__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20895:2: rule__ProtocolsRepository__Group__7__Impl rule__ProtocolsRepository__Group__8
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group__7__Impl_in_rule__ProtocolsRepository__Group__741442);
+            rule__ProtocolsRepository__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group__8_in_rule__ProtocolsRepository__Group__741445);
+            rule__ProtocolsRepository__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group__7"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20902:1: rule__ProtocolsRepository__Group__7__Impl : ( '}' ) ;
+    public final void rule__ProtocolsRepository__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20906:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20907:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20907:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20908:1: '}'
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getRightCurlyBracketKeyword_7()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__ProtocolsRepository__Group__7__Impl41473); 
+             after(grammarAccess.getProtocolsRepositoryAccess().getRightCurlyBracketKeyword_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group__7__Impl"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20921:1: rule__ProtocolsRepository__Group__8 : rule__ProtocolsRepository__Group__8__Impl ;
+    public final void rule__ProtocolsRepository__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20925:1: ( rule__ProtocolsRepository__Group__8__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20926:2: rule__ProtocolsRepository__Group__8__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group__8__Impl_in_rule__ProtocolsRepository__Group__841504);
+            rule__ProtocolsRepository__Group__8__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group__8"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20932:1: rule__ProtocolsRepository__Group__8__Impl : ( '}' ) ;
+    public final void rule__ProtocolsRepository__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20936:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20937:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20937:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20938:1: '}'
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getRightCurlyBracketKeyword_8()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__ProtocolsRepository__Group__8__Impl41532); 
+             after(grammarAccess.getProtocolsRepositoryAccess().getRightCurlyBracketKeyword_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group__8__Impl"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group_2__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20969:1: rule__ProtocolsRepository__Group_2__0 : rule__ProtocolsRepository__Group_2__0__Impl rule__ProtocolsRepository__Group_2__1 ;
+    public final void rule__ProtocolsRepository__Group_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20973:1: ( rule__ProtocolsRepository__Group_2__0__Impl rule__ProtocolsRepository__Group_2__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20974:2: rule__ProtocolsRepository__Group_2__0__Impl rule__ProtocolsRepository__Group_2__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group_2__0__Impl_in_rule__ProtocolsRepository__Group_2__041581);
+            rule__ProtocolsRepository__Group_2__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group_2__1_in_rule__ProtocolsRepository__Group_2__041584);
+            rule__ProtocolsRepository__Group_2__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group_2__0"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group_2__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20981:1: rule__ProtocolsRepository__Group_2__0__Impl : ( 'stacks' ) ;
+    public final void rule__ProtocolsRepository__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20985:1: ( ( 'stacks' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20986:1: ( 'stacks' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20986:1: ( 'stacks' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:20987:1: 'stacks'
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getStacksKeyword_2_0()); 
+            match(input,133,FollowSets001.FOLLOW_133_in_rule__ProtocolsRepository__Group_2__0__Impl41612); 
+             after(grammarAccess.getProtocolsRepositoryAccess().getStacksKeyword_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group_2__0__Impl"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group_2__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21000:1: rule__ProtocolsRepository__Group_2__1 : rule__ProtocolsRepository__Group_2__1__Impl rule__ProtocolsRepository__Group_2__2 ;
+    public final void rule__ProtocolsRepository__Group_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21004:1: ( rule__ProtocolsRepository__Group_2__1__Impl rule__ProtocolsRepository__Group_2__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21005:2: rule__ProtocolsRepository__Group_2__1__Impl rule__ProtocolsRepository__Group_2__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group_2__1__Impl_in_rule__ProtocolsRepository__Group_2__141643);
+            rule__ProtocolsRepository__Group_2__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group_2__2_in_rule__ProtocolsRepository__Group_2__141646);
+            rule__ProtocolsRepository__Group_2__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group_2__1"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group_2__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21012:1: rule__ProtocolsRepository__Group_2__1__Impl : ( '{' ) ;
+    public final void rule__ProtocolsRepository__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21016:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21017:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21017:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21018:1: '{'
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getLeftCurlyBracketKeyword_2_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__ProtocolsRepository__Group_2__1__Impl41674); 
+             after(grammarAccess.getProtocolsRepositoryAccess().getLeftCurlyBracketKeyword_2_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group_2__1__Impl"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group_2__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21031:1: rule__ProtocolsRepository__Group_2__2 : rule__ProtocolsRepository__Group_2__2__Impl rule__ProtocolsRepository__Group_2__3 ;
+    public final void rule__ProtocolsRepository__Group_2__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21035:1: ( rule__ProtocolsRepository__Group_2__2__Impl rule__ProtocolsRepository__Group_2__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21036:2: rule__ProtocolsRepository__Group_2__2__Impl rule__ProtocolsRepository__Group_2__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group_2__2__Impl_in_rule__ProtocolsRepository__Group_2__241705);
+            rule__ProtocolsRepository__Group_2__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group_2__3_in_rule__ProtocolsRepository__Group_2__241708);
+            rule__ProtocolsRepository__Group_2__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group_2__2"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group_2__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21043:1: rule__ProtocolsRepository__Group_2__2__Impl : ( ( rule__ProtocolsRepository__StacksAssignment_2_2 ) ) ;
+    public final void rule__ProtocolsRepository__Group_2__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21047:1: ( ( ( rule__ProtocolsRepository__StacksAssignment_2_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21048:1: ( ( rule__ProtocolsRepository__StacksAssignment_2_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21048:1: ( ( rule__ProtocolsRepository__StacksAssignment_2_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21049:1: ( rule__ProtocolsRepository__StacksAssignment_2_2 )
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getStacksAssignment_2_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21050:1: ( rule__ProtocolsRepository__StacksAssignment_2_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21050:2: rule__ProtocolsRepository__StacksAssignment_2_2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__StacksAssignment_2_2_in_rule__ProtocolsRepository__Group_2__2__Impl41735);
+            rule__ProtocolsRepository__StacksAssignment_2_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProtocolsRepositoryAccess().getStacksAssignment_2_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group_2__2__Impl"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group_2__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21060:1: rule__ProtocolsRepository__Group_2__3 : rule__ProtocolsRepository__Group_2__3__Impl rule__ProtocolsRepository__Group_2__4 ;
+    public final void rule__ProtocolsRepository__Group_2__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21064:1: ( rule__ProtocolsRepository__Group_2__3__Impl rule__ProtocolsRepository__Group_2__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21065:2: rule__ProtocolsRepository__Group_2__3__Impl rule__ProtocolsRepository__Group_2__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group_2__3__Impl_in_rule__ProtocolsRepository__Group_2__341765);
+            rule__ProtocolsRepository__Group_2__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group_2__4_in_rule__ProtocolsRepository__Group_2__341768);
+            rule__ProtocolsRepository__Group_2__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group_2__3"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group_2__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21072:1: rule__ProtocolsRepository__Group_2__3__Impl : ( ( rule__ProtocolsRepository__Group_2_3__0 )* ) ;
+    public final void rule__ProtocolsRepository__Group_2__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21076:1: ( ( ( rule__ProtocolsRepository__Group_2_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21077:1: ( ( rule__ProtocolsRepository__Group_2_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21077:1: ( ( rule__ProtocolsRepository__Group_2_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21078:1: ( rule__ProtocolsRepository__Group_2_3__0 )*
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getGroup_2_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21079:1: ( rule__ProtocolsRepository__Group_2_3__0 )*
+            loop102:
+            do {
+                int alt102=2;
+                int LA102_0 = input.LA(1);
+
+                if ( (LA102_0==31) ) {
+                    alt102=1;
+                }
+
+
+                switch (alt102) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21079:2: rule__ProtocolsRepository__Group_2_3__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group_2_3__0_in_rule__ProtocolsRepository__Group_2__3__Impl41795);
+            	    rule__ProtocolsRepository__Group_2_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop102;
+                }
+            } while (true);
+
+             after(grammarAccess.getProtocolsRepositoryAccess().getGroup_2_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group_2__3__Impl"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group_2__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21089:1: rule__ProtocolsRepository__Group_2__4 : rule__ProtocolsRepository__Group_2__4__Impl ;
+    public final void rule__ProtocolsRepository__Group_2__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21093:1: ( rule__ProtocolsRepository__Group_2__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21094:2: rule__ProtocolsRepository__Group_2__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group_2__4__Impl_in_rule__ProtocolsRepository__Group_2__441826);
+            rule__ProtocolsRepository__Group_2__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group_2__4"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group_2__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21100:1: rule__ProtocolsRepository__Group_2__4__Impl : ( '}' ) ;
+    public final void rule__ProtocolsRepository__Group_2__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21104:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21105:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21105:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21106:1: '}'
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getRightCurlyBracketKeyword_2_4()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__ProtocolsRepository__Group_2__4__Impl41854); 
+             after(grammarAccess.getProtocolsRepositoryAccess().getRightCurlyBracketKeyword_2_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group_2__4__Impl"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group_2_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21129:1: rule__ProtocolsRepository__Group_2_3__0 : rule__ProtocolsRepository__Group_2_3__0__Impl rule__ProtocolsRepository__Group_2_3__1 ;
+    public final void rule__ProtocolsRepository__Group_2_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21133:1: ( rule__ProtocolsRepository__Group_2_3__0__Impl rule__ProtocolsRepository__Group_2_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21134:2: rule__ProtocolsRepository__Group_2_3__0__Impl rule__ProtocolsRepository__Group_2_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group_2_3__0__Impl_in_rule__ProtocolsRepository__Group_2_3__041895);
+            rule__ProtocolsRepository__Group_2_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group_2_3__1_in_rule__ProtocolsRepository__Group_2_3__041898);
+            rule__ProtocolsRepository__Group_2_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group_2_3__0"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group_2_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21141:1: rule__ProtocolsRepository__Group_2_3__0__Impl : ( ',' ) ;
+    public final void rule__ProtocolsRepository__Group_2_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21145:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21146:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21146:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21147:1: ','
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getCommaKeyword_2_3_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__ProtocolsRepository__Group_2_3__0__Impl41926); 
+             after(grammarAccess.getProtocolsRepositoryAccess().getCommaKeyword_2_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group_2_3__0__Impl"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group_2_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21160:1: rule__ProtocolsRepository__Group_2_3__1 : rule__ProtocolsRepository__Group_2_3__1__Impl ;
+    public final void rule__ProtocolsRepository__Group_2_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21164:1: ( rule__ProtocolsRepository__Group_2_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21165:2: rule__ProtocolsRepository__Group_2_3__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group_2_3__1__Impl_in_rule__ProtocolsRepository__Group_2_3__141957);
+            rule__ProtocolsRepository__Group_2_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group_2_3__1"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group_2_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21171:1: rule__ProtocolsRepository__Group_2_3__1__Impl : ( ( rule__ProtocolsRepository__StacksAssignment_2_3_1 ) ) ;
+    public final void rule__ProtocolsRepository__Group_2_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21175:1: ( ( ( rule__ProtocolsRepository__StacksAssignment_2_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21176:1: ( ( rule__ProtocolsRepository__StacksAssignment_2_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21176:1: ( ( rule__ProtocolsRepository__StacksAssignment_2_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21177:1: ( rule__ProtocolsRepository__StacksAssignment_2_3_1 )
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getStacksAssignment_2_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21178:1: ( rule__ProtocolsRepository__StacksAssignment_2_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21178:2: rule__ProtocolsRepository__StacksAssignment_2_3_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__StacksAssignment_2_3_1_in_rule__ProtocolsRepository__Group_2_3__1__Impl41984);
+            rule__ProtocolsRepository__StacksAssignment_2_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProtocolsRepositoryAccess().getStacksAssignment_2_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group_2_3__1__Impl"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group_6__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21192:1: rule__ProtocolsRepository__Group_6__0 : rule__ProtocolsRepository__Group_6__0__Impl rule__ProtocolsRepository__Group_6__1 ;
+    public final void rule__ProtocolsRepository__Group_6__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21196:1: ( rule__ProtocolsRepository__Group_6__0__Impl rule__ProtocolsRepository__Group_6__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21197:2: rule__ProtocolsRepository__Group_6__0__Impl rule__ProtocolsRepository__Group_6__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group_6__0__Impl_in_rule__ProtocolsRepository__Group_6__042018);
+            rule__ProtocolsRepository__Group_6__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group_6__1_in_rule__ProtocolsRepository__Group_6__042021);
+            rule__ProtocolsRepository__Group_6__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group_6__0"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group_6__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21204:1: rule__ProtocolsRepository__Group_6__0__Impl : ( ',' ) ;
+    public final void rule__ProtocolsRepository__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21208:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21209:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21209:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21210:1: ','
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getCommaKeyword_6_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__ProtocolsRepository__Group_6__0__Impl42049); 
+             after(grammarAccess.getProtocolsRepositoryAccess().getCommaKeyword_6_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group_6__0__Impl"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group_6__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21223:1: rule__ProtocolsRepository__Group_6__1 : rule__ProtocolsRepository__Group_6__1__Impl ;
+    public final void rule__ProtocolsRepository__Group_6__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21227:1: ( rule__ProtocolsRepository__Group_6__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21228:2: rule__ProtocolsRepository__Group_6__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__Group_6__1__Impl_in_rule__ProtocolsRepository__Group_6__142080);
+            rule__ProtocolsRepository__Group_6__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group_6__1"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__Group_6__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21234:1: rule__ProtocolsRepository__Group_6__1__Impl : ( ( rule__ProtocolsRepository__ProtocolsAssignment_6_1 ) ) ;
+    public final void rule__ProtocolsRepository__Group_6__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21238:1: ( ( ( rule__ProtocolsRepository__ProtocolsAssignment_6_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21239:1: ( ( rule__ProtocolsRepository__ProtocolsAssignment_6_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21239:1: ( ( rule__ProtocolsRepository__ProtocolsAssignment_6_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21240:1: ( rule__ProtocolsRepository__ProtocolsAssignment_6_1 )
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getProtocolsAssignment_6_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21241:1: ( rule__ProtocolsRepository__ProtocolsAssignment_6_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21241:2: rule__ProtocolsRepository__ProtocolsAssignment_6_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolsRepository__ProtocolsAssignment_6_1_in_rule__ProtocolsRepository__Group_6__1__Impl42107);
+            rule__ProtocolsRepository__ProtocolsAssignment_6_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProtocolsRepositoryAccess().getProtocolsAssignment_6_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__Group_6__1__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21255:1: rule__RoutesRepository__Group__0 : rule__RoutesRepository__Group__0__Impl rule__RoutesRepository__Group__1 ;
+    public final void rule__RoutesRepository__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21259:1: ( rule__RoutesRepository__Group__0__Impl rule__RoutesRepository__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21260:2: rule__RoutesRepository__Group__0__Impl rule__RoutesRepository__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group__0__Impl_in_rule__RoutesRepository__Group__042141);
+            rule__RoutesRepository__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group__1_in_rule__RoutesRepository__Group__042144);
+            rule__RoutesRepository__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group__0"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21267:1: rule__RoutesRepository__Group__0__Impl : ( () ) ;
+    public final void rule__RoutesRepository__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21271:1: ( ( () ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21272:1: ( () )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21272:1: ( () )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21273:1: ()
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getRoutesRepositoryAction_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21274:1: ()
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21276:1: 
+            {
+            }
+
+             after(grammarAccess.getRoutesRepositoryAccess().getRoutesRepositoryAction_0()); 
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group__0__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21286:1: rule__RoutesRepository__Group__1 : rule__RoutesRepository__Group__1__Impl rule__RoutesRepository__Group__2 ;
+    public final void rule__RoutesRepository__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21290:1: ( rule__RoutesRepository__Group__1__Impl rule__RoutesRepository__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21291:2: rule__RoutesRepository__Group__1__Impl rule__RoutesRepository__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group__1__Impl_in_rule__RoutesRepository__Group__142202);
+            rule__RoutesRepository__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group__2_in_rule__RoutesRepository__Group__142205);
+            rule__RoutesRepository__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group__1"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21298:1: rule__RoutesRepository__Group__1__Impl : ( 'RoutesRepository' ) ;
+    public final void rule__RoutesRepository__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21302:1: ( ( 'RoutesRepository' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21303:1: ( 'RoutesRepository' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21303:1: ( 'RoutesRepository' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21304:1: 'RoutesRepository'
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getRoutesRepositoryKeyword_1()); 
+            match(input,134,FollowSets001.FOLLOW_134_in_rule__RoutesRepository__Group__1__Impl42233); 
+             after(grammarAccess.getRoutesRepositoryAccess().getRoutesRepositoryKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group__1__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21317:1: rule__RoutesRepository__Group__2 : rule__RoutesRepository__Group__2__Impl rule__RoutesRepository__Group__3 ;
+    public final void rule__RoutesRepository__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21321:1: ( rule__RoutesRepository__Group__2__Impl rule__RoutesRepository__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21322:2: rule__RoutesRepository__Group__2__Impl rule__RoutesRepository__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group__2__Impl_in_rule__RoutesRepository__Group__242264);
+            rule__RoutesRepository__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group__3_in_rule__RoutesRepository__Group__242267);
+            rule__RoutesRepository__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group__2"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21329:1: rule__RoutesRepository__Group__2__Impl : ( '{' ) ;
+    public final void rule__RoutesRepository__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21333:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21334:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21334:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21335:1: '{'
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__RoutesRepository__Group__2__Impl42295); 
+             after(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group__2__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21348:1: rule__RoutesRepository__Group__3 : rule__RoutesRepository__Group__3__Impl rule__RoutesRepository__Group__4 ;
+    public final void rule__RoutesRepository__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21352:1: ( rule__RoutesRepository__Group__3__Impl rule__RoutesRepository__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21353:2: rule__RoutesRepository__Group__3__Impl rule__RoutesRepository__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group__3__Impl_in_rule__RoutesRepository__Group__342326);
+            rule__RoutesRepository__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group__4_in_rule__RoutesRepository__Group__342329);
+            rule__RoutesRepository__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group__3"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21360:1: rule__RoutesRepository__Group__3__Impl : ( ( rule__RoutesRepository__Group_3__0 )? ) ;
+    public final void rule__RoutesRepository__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21364:1: ( ( ( rule__RoutesRepository__Group_3__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21365:1: ( ( rule__RoutesRepository__Group_3__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21365:1: ( ( rule__RoutesRepository__Group_3__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21366:1: ( rule__RoutesRepository__Group_3__0 )?
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getGroup_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21367:1: ( rule__RoutesRepository__Group_3__0 )?
+            int alt103=2;
+            int LA103_0 = input.LA(1);
+
+            if ( (LA103_0==61) ) {
+                alt103=1;
+            }
+            switch (alt103) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21367:2: rule__RoutesRepository__Group_3__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_3__0_in_rule__RoutesRepository__Group__3__Impl42356);
+                    rule__RoutesRepository__Group_3__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getRoutesRepositoryAccess().getGroup_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group__3__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21377:1: rule__RoutesRepository__Group__4 : rule__RoutesRepository__Group__4__Impl rule__RoutesRepository__Group__5 ;
+    public final void rule__RoutesRepository__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21381:1: ( rule__RoutesRepository__Group__4__Impl rule__RoutesRepository__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21382:2: rule__RoutesRepository__Group__4__Impl rule__RoutesRepository__Group__5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group__4__Impl_in_rule__RoutesRepository__Group__442387);
+            rule__RoutesRepository__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group__5_in_rule__RoutesRepository__Group__442390);
+            rule__RoutesRepository__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group__4"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21389:1: rule__RoutesRepository__Group__4__Impl : ( ( rule__RoutesRepository__Group_4__0 )? ) ;
+    public final void rule__RoutesRepository__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21393:1: ( ( ( rule__RoutesRepository__Group_4__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21394:1: ( ( rule__RoutesRepository__Group_4__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21394:1: ( ( rule__RoutesRepository__Group_4__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21395:1: ( rule__RoutesRepository__Group_4__0 )?
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getGroup_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21396:1: ( rule__RoutesRepository__Group_4__0 )?
+            int alt104=2;
+            int LA104_0 = input.LA(1);
+
+            if ( (LA104_0==135) ) {
+                alt104=1;
+            }
+            switch (alt104) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21396:2: rule__RoutesRepository__Group_4__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_4__0_in_rule__RoutesRepository__Group__4__Impl42417);
+                    rule__RoutesRepository__Group_4__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getRoutesRepositoryAccess().getGroup_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group__4__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21406:1: rule__RoutesRepository__Group__5 : rule__RoutesRepository__Group__5__Impl rule__RoutesRepository__Group__6 ;
+    public final void rule__RoutesRepository__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21410:1: ( rule__RoutesRepository__Group__5__Impl rule__RoutesRepository__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21411:2: rule__RoutesRepository__Group__5__Impl rule__RoutesRepository__Group__6
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group__5__Impl_in_rule__RoutesRepository__Group__542448);
+            rule__RoutesRepository__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group__6_in_rule__RoutesRepository__Group__542451);
+            rule__RoutesRepository__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group__5"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21418:1: rule__RoutesRepository__Group__5__Impl : ( ( rule__RoutesRepository__Group_5__0 )? ) ;
+    public final void rule__RoutesRepository__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21422:1: ( ( ( rule__RoutesRepository__Group_5__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21423:1: ( ( rule__RoutesRepository__Group_5__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21423:1: ( ( rule__RoutesRepository__Group_5__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21424:1: ( rule__RoutesRepository__Group_5__0 )?
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getGroup_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21425:1: ( rule__RoutesRepository__Group_5__0 )?
+            int alt105=2;
+            int LA105_0 = input.LA(1);
+
+            if ( (LA105_0==136) ) {
+                alt105=1;
+            }
+            switch (alt105) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21425:2: rule__RoutesRepository__Group_5__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_5__0_in_rule__RoutesRepository__Group__5__Impl42478);
+                    rule__RoutesRepository__Group_5__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getRoutesRepositoryAccess().getGroup_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group__5__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21435:1: rule__RoutesRepository__Group__6 : rule__RoutesRepository__Group__6__Impl ;
+    public final void rule__RoutesRepository__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21439:1: ( rule__RoutesRepository__Group__6__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21440:2: rule__RoutesRepository__Group__6__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group__6__Impl_in_rule__RoutesRepository__Group__642509);
+            rule__RoutesRepository__Group__6__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group__6"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21446:1: rule__RoutesRepository__Group__6__Impl : ( '}' ) ;
+    public final void rule__RoutesRepository__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21450:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21451:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21451:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21452:1: '}'
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_6()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__RoutesRepository__Group__6__Impl42537); 
+             after(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group__6__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21479:1: rule__RoutesRepository__Group_3__0 : rule__RoutesRepository__Group_3__0__Impl rule__RoutesRepository__Group_3__1 ;
+    public final void rule__RoutesRepository__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21483:1: ( rule__RoutesRepository__Group_3__0__Impl rule__RoutesRepository__Group_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21484:2: rule__RoutesRepository__Group_3__0__Impl rule__RoutesRepository__Group_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_3__0__Impl_in_rule__RoutesRepository__Group_3__042582);
+            rule__RoutesRepository__Group_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_3__1_in_rule__RoutesRepository__Group_3__042585);
+            rule__RoutesRepository__Group_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_3__0"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21491:1: rule__RoutesRepository__Group_3__0__Impl : ( 'routes' ) ;
+    public final void rule__RoutesRepository__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21495:1: ( ( 'routes' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21496:1: ( 'routes' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21496:1: ( 'routes' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21497:1: 'routes'
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getRoutesKeyword_3_0()); 
+            match(input,61,FollowSets001.FOLLOW_61_in_rule__RoutesRepository__Group_3__0__Impl42613); 
+             after(grammarAccess.getRoutesRepositoryAccess().getRoutesKeyword_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21510:1: rule__RoutesRepository__Group_3__1 : rule__RoutesRepository__Group_3__1__Impl rule__RoutesRepository__Group_3__2 ;
+    public final void rule__RoutesRepository__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21514:1: ( rule__RoutesRepository__Group_3__1__Impl rule__RoutesRepository__Group_3__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21515:2: rule__RoutesRepository__Group_3__1__Impl rule__RoutesRepository__Group_3__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_3__1__Impl_in_rule__RoutesRepository__Group_3__142644);
+            rule__RoutesRepository__Group_3__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_3__2_in_rule__RoutesRepository__Group_3__142647);
+            rule__RoutesRepository__Group_3__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_3__1"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21522:1: rule__RoutesRepository__Group_3__1__Impl : ( '{' ) ;
+    public final void rule__RoutesRepository__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21526:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21527:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21527:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21528:1: '{'
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_3_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__RoutesRepository__Group_3__1__Impl42675); 
+             after(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_3__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21541:1: rule__RoutesRepository__Group_3__2 : rule__RoutesRepository__Group_3__2__Impl rule__RoutesRepository__Group_3__3 ;
+    public final void rule__RoutesRepository__Group_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21545:1: ( rule__RoutesRepository__Group_3__2__Impl rule__RoutesRepository__Group_3__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21546:2: rule__RoutesRepository__Group_3__2__Impl rule__RoutesRepository__Group_3__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_3__2__Impl_in_rule__RoutesRepository__Group_3__242706);
+            rule__RoutesRepository__Group_3__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_3__3_in_rule__RoutesRepository__Group_3__242709);
+            rule__RoutesRepository__Group_3__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_3__2"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_3__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21553:1: rule__RoutesRepository__Group_3__2__Impl : ( ( rule__RoutesRepository__RoutesAssignment_3_2 ) ) ;
+    public final void rule__RoutesRepository__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21557:1: ( ( ( rule__RoutesRepository__RoutesAssignment_3_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21558:1: ( ( rule__RoutesRepository__RoutesAssignment_3_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21558:1: ( ( rule__RoutesRepository__RoutesAssignment_3_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21559:1: ( rule__RoutesRepository__RoutesAssignment_3_2 )
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getRoutesAssignment_3_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21560:1: ( rule__RoutesRepository__RoutesAssignment_3_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21560:2: rule__RoutesRepository__RoutesAssignment_3_2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__RoutesAssignment_3_2_in_rule__RoutesRepository__Group_3__2__Impl42736);
+            rule__RoutesRepository__RoutesAssignment_3_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRoutesRepositoryAccess().getRoutesAssignment_3_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_3__2__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_3__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21570:1: rule__RoutesRepository__Group_3__3 : rule__RoutesRepository__Group_3__3__Impl rule__RoutesRepository__Group_3__4 ;
+    public final void rule__RoutesRepository__Group_3__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21574:1: ( rule__RoutesRepository__Group_3__3__Impl rule__RoutesRepository__Group_3__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21575:2: rule__RoutesRepository__Group_3__3__Impl rule__RoutesRepository__Group_3__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_3__3__Impl_in_rule__RoutesRepository__Group_3__342766);
+            rule__RoutesRepository__Group_3__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_3__4_in_rule__RoutesRepository__Group_3__342769);
+            rule__RoutesRepository__Group_3__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_3__3"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_3__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21582:1: rule__RoutesRepository__Group_3__3__Impl : ( ( rule__RoutesRepository__Group_3_3__0 )* ) ;
+    public final void rule__RoutesRepository__Group_3__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21586:1: ( ( ( rule__RoutesRepository__Group_3_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21587:1: ( ( rule__RoutesRepository__Group_3_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21587:1: ( ( rule__RoutesRepository__Group_3_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21588:1: ( rule__RoutesRepository__Group_3_3__0 )*
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getGroup_3_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21589:1: ( rule__RoutesRepository__Group_3_3__0 )*
+            loop106:
+            do {
+                int alt106=2;
+                int LA106_0 = input.LA(1);
+
+                if ( (LA106_0==31) ) {
+                    alt106=1;
+                }
+
+
+                switch (alt106) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21589:2: rule__RoutesRepository__Group_3_3__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_3_3__0_in_rule__RoutesRepository__Group_3__3__Impl42796);
+            	    rule__RoutesRepository__Group_3_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop106;
+                }
+            } while (true);
+
+             after(grammarAccess.getRoutesRepositoryAccess().getGroup_3_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_3__3__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_3__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21599:1: rule__RoutesRepository__Group_3__4 : rule__RoutesRepository__Group_3__4__Impl ;
+    public final void rule__RoutesRepository__Group_3__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21603:1: ( rule__RoutesRepository__Group_3__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21604:2: rule__RoutesRepository__Group_3__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_3__4__Impl_in_rule__RoutesRepository__Group_3__442827);
+            rule__RoutesRepository__Group_3__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_3__4"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_3__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21610:1: rule__RoutesRepository__Group_3__4__Impl : ( '}' ) ;
+    public final void rule__RoutesRepository__Group_3__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21614:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21615:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21615:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21616:1: '}'
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_3_4()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__RoutesRepository__Group_3__4__Impl42855); 
+             after(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_3_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_3__4__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_3_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21639:1: rule__RoutesRepository__Group_3_3__0 : rule__RoutesRepository__Group_3_3__0__Impl rule__RoutesRepository__Group_3_3__1 ;
+    public final void rule__RoutesRepository__Group_3_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21643:1: ( rule__RoutesRepository__Group_3_3__0__Impl rule__RoutesRepository__Group_3_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21644:2: rule__RoutesRepository__Group_3_3__0__Impl rule__RoutesRepository__Group_3_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_3_3__0__Impl_in_rule__RoutesRepository__Group_3_3__042896);
+            rule__RoutesRepository__Group_3_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_3_3__1_in_rule__RoutesRepository__Group_3_3__042899);
+            rule__RoutesRepository__Group_3_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_3_3__0"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_3_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21651:1: rule__RoutesRepository__Group_3_3__0__Impl : ( ',' ) ;
+    public final void rule__RoutesRepository__Group_3_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21655:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21656:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21656:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21657:1: ','
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getCommaKeyword_3_3_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__RoutesRepository__Group_3_3__0__Impl42927); 
+             after(grammarAccess.getRoutesRepositoryAccess().getCommaKeyword_3_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_3_3__0__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_3_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21670:1: rule__RoutesRepository__Group_3_3__1 : rule__RoutesRepository__Group_3_3__1__Impl ;
+    public final void rule__RoutesRepository__Group_3_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21674:1: ( rule__RoutesRepository__Group_3_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21675:2: rule__RoutesRepository__Group_3_3__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_3_3__1__Impl_in_rule__RoutesRepository__Group_3_3__142958);
+            rule__RoutesRepository__Group_3_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_3_3__1"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_3_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21681:1: rule__RoutesRepository__Group_3_3__1__Impl : ( ( rule__RoutesRepository__RoutesAssignment_3_3_1 ) ) ;
+    public final void rule__RoutesRepository__Group_3_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21685:1: ( ( ( rule__RoutesRepository__RoutesAssignment_3_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21686:1: ( ( rule__RoutesRepository__RoutesAssignment_3_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21686:1: ( ( rule__RoutesRepository__RoutesAssignment_3_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21687:1: ( rule__RoutesRepository__RoutesAssignment_3_3_1 )
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getRoutesAssignment_3_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21688:1: ( rule__RoutesRepository__RoutesAssignment_3_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21688:2: rule__RoutesRepository__RoutesAssignment_3_3_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__RoutesAssignment_3_3_1_in_rule__RoutesRepository__Group_3_3__1__Impl42985);
+            rule__RoutesRepository__RoutesAssignment_3_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRoutesRepositoryAccess().getRoutesAssignment_3_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_3_3__1__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_4__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21702:1: rule__RoutesRepository__Group_4__0 : rule__RoutesRepository__Group_4__0__Impl rule__RoutesRepository__Group_4__1 ;
+    public final void rule__RoutesRepository__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21706:1: ( rule__RoutesRepository__Group_4__0__Impl rule__RoutesRepository__Group_4__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21707:2: rule__RoutesRepository__Group_4__0__Impl rule__RoutesRepository__Group_4__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_4__0__Impl_in_rule__RoutesRepository__Group_4__043019);
+            rule__RoutesRepository__Group_4__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_4__1_in_rule__RoutesRepository__Group_4__043022);
+            rule__RoutesRepository__Group_4__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_4__0"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_4__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21714:1: rule__RoutesRepository__Group_4__0__Impl : ( 'flowRoutes' ) ;
+    public final void rule__RoutesRepository__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21718:1: ( ( 'flowRoutes' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21719:1: ( 'flowRoutes' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21719:1: ( 'flowRoutes' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21720:1: 'flowRoutes'
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesKeyword_4_0()); 
+            match(input,135,FollowSets001.FOLLOW_135_in_rule__RoutesRepository__Group_4__0__Impl43050); 
+             after(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesKeyword_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_4__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21733:1: rule__RoutesRepository__Group_4__1 : rule__RoutesRepository__Group_4__1__Impl rule__RoutesRepository__Group_4__2 ;
+    public final void rule__RoutesRepository__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21737:1: ( rule__RoutesRepository__Group_4__1__Impl rule__RoutesRepository__Group_4__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21738:2: rule__RoutesRepository__Group_4__1__Impl rule__RoutesRepository__Group_4__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_4__1__Impl_in_rule__RoutesRepository__Group_4__143081);
+            rule__RoutesRepository__Group_4__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_4__2_in_rule__RoutesRepository__Group_4__143084);
+            rule__RoutesRepository__Group_4__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_4__1"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_4__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21745:1: rule__RoutesRepository__Group_4__1__Impl : ( '{' ) ;
+    public final void rule__RoutesRepository__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21749:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21750:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21750:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21751:1: '{'
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_4_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__RoutesRepository__Group_4__1__Impl43112); 
+             after(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_4_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_4__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21764:1: rule__RoutesRepository__Group_4__2 : rule__RoutesRepository__Group_4__2__Impl rule__RoutesRepository__Group_4__3 ;
+    public final void rule__RoutesRepository__Group_4__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21768:1: ( rule__RoutesRepository__Group_4__2__Impl rule__RoutesRepository__Group_4__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21769:2: rule__RoutesRepository__Group_4__2__Impl rule__RoutesRepository__Group_4__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_4__2__Impl_in_rule__RoutesRepository__Group_4__243143);
+            rule__RoutesRepository__Group_4__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_4__3_in_rule__RoutesRepository__Group_4__243146);
+            rule__RoutesRepository__Group_4__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_4__2"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_4__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21776:1: rule__RoutesRepository__Group_4__2__Impl : ( ( rule__RoutesRepository__FlowRoutesAssignment_4_2 ) ) ;
+    public final void rule__RoutesRepository__Group_4__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21780:1: ( ( ( rule__RoutesRepository__FlowRoutesAssignment_4_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21781:1: ( ( rule__RoutesRepository__FlowRoutesAssignment_4_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21781:1: ( ( rule__RoutesRepository__FlowRoutesAssignment_4_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21782:1: ( rule__RoutesRepository__FlowRoutesAssignment_4_2 )
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesAssignment_4_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21783:1: ( rule__RoutesRepository__FlowRoutesAssignment_4_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21783:2: rule__RoutesRepository__FlowRoutesAssignment_4_2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__FlowRoutesAssignment_4_2_in_rule__RoutesRepository__Group_4__2__Impl43173);
+            rule__RoutesRepository__FlowRoutesAssignment_4_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesAssignment_4_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_4__2__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_4__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21793:1: rule__RoutesRepository__Group_4__3 : rule__RoutesRepository__Group_4__3__Impl rule__RoutesRepository__Group_4__4 ;
+    public final void rule__RoutesRepository__Group_4__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21797:1: ( rule__RoutesRepository__Group_4__3__Impl rule__RoutesRepository__Group_4__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21798:2: rule__RoutesRepository__Group_4__3__Impl rule__RoutesRepository__Group_4__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_4__3__Impl_in_rule__RoutesRepository__Group_4__343203);
+            rule__RoutesRepository__Group_4__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_4__4_in_rule__RoutesRepository__Group_4__343206);
+            rule__RoutesRepository__Group_4__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_4__3"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_4__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21805:1: rule__RoutesRepository__Group_4__3__Impl : ( ( rule__RoutesRepository__Group_4_3__0 )* ) ;
+    public final void rule__RoutesRepository__Group_4__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21809:1: ( ( ( rule__RoutesRepository__Group_4_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21810:1: ( ( rule__RoutesRepository__Group_4_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21810:1: ( ( rule__RoutesRepository__Group_4_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21811:1: ( rule__RoutesRepository__Group_4_3__0 )*
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getGroup_4_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21812:1: ( rule__RoutesRepository__Group_4_3__0 )*
+            loop107:
+            do {
+                int alt107=2;
+                int LA107_0 = input.LA(1);
+
+                if ( (LA107_0==31) ) {
+                    alt107=1;
+                }
+
+
+                switch (alt107) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21812:2: rule__RoutesRepository__Group_4_3__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_4_3__0_in_rule__RoutesRepository__Group_4__3__Impl43233);
+            	    rule__RoutesRepository__Group_4_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop107;
+                }
+            } while (true);
+
+             after(grammarAccess.getRoutesRepositoryAccess().getGroup_4_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_4__3__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_4__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21822:1: rule__RoutesRepository__Group_4__4 : rule__RoutesRepository__Group_4__4__Impl ;
+    public final void rule__RoutesRepository__Group_4__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21826:1: ( rule__RoutesRepository__Group_4__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21827:2: rule__RoutesRepository__Group_4__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_4__4__Impl_in_rule__RoutesRepository__Group_4__443264);
+            rule__RoutesRepository__Group_4__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_4__4"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_4__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21833:1: rule__RoutesRepository__Group_4__4__Impl : ( '}' ) ;
+    public final void rule__RoutesRepository__Group_4__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21837:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21838:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21838:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21839:1: '}'
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_4_4()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__RoutesRepository__Group_4__4__Impl43292); 
+             after(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_4_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_4__4__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_4_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21862:1: rule__RoutesRepository__Group_4_3__0 : rule__RoutesRepository__Group_4_3__0__Impl rule__RoutesRepository__Group_4_3__1 ;
+    public final void rule__RoutesRepository__Group_4_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21866:1: ( rule__RoutesRepository__Group_4_3__0__Impl rule__RoutesRepository__Group_4_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21867:2: rule__RoutesRepository__Group_4_3__0__Impl rule__RoutesRepository__Group_4_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_4_3__0__Impl_in_rule__RoutesRepository__Group_4_3__043333);
+            rule__RoutesRepository__Group_4_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_4_3__1_in_rule__RoutesRepository__Group_4_3__043336);
+            rule__RoutesRepository__Group_4_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_4_3__0"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_4_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21874:1: rule__RoutesRepository__Group_4_3__0__Impl : ( ',' ) ;
+    public final void rule__RoutesRepository__Group_4_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21878:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21879:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21879:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21880:1: ','
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getCommaKeyword_4_3_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__RoutesRepository__Group_4_3__0__Impl43364); 
+             after(grammarAccess.getRoutesRepositoryAccess().getCommaKeyword_4_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_4_3__0__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_4_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21893:1: rule__RoutesRepository__Group_4_3__1 : rule__RoutesRepository__Group_4_3__1__Impl ;
+    public final void rule__RoutesRepository__Group_4_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21897:1: ( rule__RoutesRepository__Group_4_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21898:2: rule__RoutesRepository__Group_4_3__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_4_3__1__Impl_in_rule__RoutesRepository__Group_4_3__143395);
+            rule__RoutesRepository__Group_4_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_4_3__1"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_4_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21904:1: rule__RoutesRepository__Group_4_3__1__Impl : ( ( rule__RoutesRepository__FlowRoutesAssignment_4_3_1 ) ) ;
+    public final void rule__RoutesRepository__Group_4_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21908:1: ( ( ( rule__RoutesRepository__FlowRoutesAssignment_4_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21909:1: ( ( rule__RoutesRepository__FlowRoutesAssignment_4_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21909:1: ( ( rule__RoutesRepository__FlowRoutesAssignment_4_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21910:1: ( rule__RoutesRepository__FlowRoutesAssignment_4_3_1 )
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesAssignment_4_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21911:1: ( rule__RoutesRepository__FlowRoutesAssignment_4_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21911:2: rule__RoutesRepository__FlowRoutesAssignment_4_3_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__FlowRoutesAssignment_4_3_1_in_rule__RoutesRepository__Group_4_3__1__Impl43422);
+            rule__RoutesRepository__FlowRoutesAssignment_4_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesAssignment_4_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_4_3__1__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_5__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21925:1: rule__RoutesRepository__Group_5__0 : rule__RoutesRepository__Group_5__0__Impl rule__RoutesRepository__Group_5__1 ;
+    public final void rule__RoutesRepository__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21929:1: ( rule__RoutesRepository__Group_5__0__Impl rule__RoutesRepository__Group_5__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21930:2: rule__RoutesRepository__Group_5__0__Impl rule__RoutesRepository__Group_5__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_5__0__Impl_in_rule__RoutesRepository__Group_5__043456);
+            rule__RoutesRepository__Group_5__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_5__1_in_rule__RoutesRepository__Group_5__043459);
+            rule__RoutesRepository__Group_5__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_5__0"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_5__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21937:1: rule__RoutesRepository__Group_5__0__Impl : ( 'directions' ) ;
+    public final void rule__RoutesRepository__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21941:1: ( ( 'directions' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21942:1: ( 'directions' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21942:1: ( 'directions' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21943:1: 'directions'
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getDirectionsKeyword_5_0()); 
+            match(input,136,FollowSets001.FOLLOW_136_in_rule__RoutesRepository__Group_5__0__Impl43487); 
+             after(grammarAccess.getRoutesRepositoryAccess().getDirectionsKeyword_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_5__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21956:1: rule__RoutesRepository__Group_5__1 : rule__RoutesRepository__Group_5__1__Impl rule__RoutesRepository__Group_5__2 ;
+    public final void rule__RoutesRepository__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21960:1: ( rule__RoutesRepository__Group_5__1__Impl rule__RoutesRepository__Group_5__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21961:2: rule__RoutesRepository__Group_5__1__Impl rule__RoutesRepository__Group_5__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_5__1__Impl_in_rule__RoutesRepository__Group_5__143518);
+            rule__RoutesRepository__Group_5__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_5__2_in_rule__RoutesRepository__Group_5__143521);
+            rule__RoutesRepository__Group_5__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_5__1"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_5__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21968:1: rule__RoutesRepository__Group_5__1__Impl : ( '{' ) ;
+    public final void rule__RoutesRepository__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21972:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21973:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21973:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21974:1: '{'
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_5_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__RoutesRepository__Group_5__1__Impl43549); 
+             after(grammarAccess.getRoutesRepositoryAccess().getLeftCurlyBracketKeyword_5_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_5__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21987:1: rule__RoutesRepository__Group_5__2 : rule__RoutesRepository__Group_5__2__Impl rule__RoutesRepository__Group_5__3 ;
+    public final void rule__RoutesRepository__Group_5__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21991:1: ( rule__RoutesRepository__Group_5__2__Impl rule__RoutesRepository__Group_5__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21992:2: rule__RoutesRepository__Group_5__2__Impl rule__RoutesRepository__Group_5__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_5__2__Impl_in_rule__RoutesRepository__Group_5__243580);
+            rule__RoutesRepository__Group_5__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_5__3_in_rule__RoutesRepository__Group_5__243583);
+            rule__RoutesRepository__Group_5__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_5__2"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_5__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:21999:1: rule__RoutesRepository__Group_5__2__Impl : ( ( rule__RoutesRepository__DirectionsAssignment_5_2 ) ) ;
+    public final void rule__RoutesRepository__Group_5__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22003:1: ( ( ( rule__RoutesRepository__DirectionsAssignment_5_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22004:1: ( ( rule__RoutesRepository__DirectionsAssignment_5_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22004:1: ( ( rule__RoutesRepository__DirectionsAssignment_5_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22005:1: ( rule__RoutesRepository__DirectionsAssignment_5_2 )
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getDirectionsAssignment_5_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22006:1: ( rule__RoutesRepository__DirectionsAssignment_5_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22006:2: rule__RoutesRepository__DirectionsAssignment_5_2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__DirectionsAssignment_5_2_in_rule__RoutesRepository__Group_5__2__Impl43610);
+            rule__RoutesRepository__DirectionsAssignment_5_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRoutesRepositoryAccess().getDirectionsAssignment_5_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_5__2__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_5__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22016:1: rule__RoutesRepository__Group_5__3 : rule__RoutesRepository__Group_5__3__Impl rule__RoutesRepository__Group_5__4 ;
+    public final void rule__RoutesRepository__Group_5__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22020:1: ( rule__RoutesRepository__Group_5__3__Impl rule__RoutesRepository__Group_5__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22021:2: rule__RoutesRepository__Group_5__3__Impl rule__RoutesRepository__Group_5__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_5__3__Impl_in_rule__RoutesRepository__Group_5__343640);
+            rule__RoutesRepository__Group_5__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_5__4_in_rule__RoutesRepository__Group_5__343643);
+            rule__RoutesRepository__Group_5__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_5__3"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_5__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22028:1: rule__RoutesRepository__Group_5__3__Impl : ( ( rule__RoutesRepository__Group_5_3__0 )* ) ;
+    public final void rule__RoutesRepository__Group_5__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22032:1: ( ( ( rule__RoutesRepository__Group_5_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22033:1: ( ( rule__RoutesRepository__Group_5_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22033:1: ( ( rule__RoutesRepository__Group_5_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22034:1: ( rule__RoutesRepository__Group_5_3__0 )*
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getGroup_5_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22035:1: ( rule__RoutesRepository__Group_5_3__0 )*
+            loop108:
+            do {
+                int alt108=2;
+                int LA108_0 = input.LA(1);
+
+                if ( (LA108_0==31) ) {
+                    alt108=1;
+                }
+
+
+                switch (alt108) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22035:2: rule__RoutesRepository__Group_5_3__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_5_3__0_in_rule__RoutesRepository__Group_5__3__Impl43670);
+            	    rule__RoutesRepository__Group_5_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop108;
+                }
+            } while (true);
+
+             after(grammarAccess.getRoutesRepositoryAccess().getGroup_5_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_5__3__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_5__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22045:1: rule__RoutesRepository__Group_5__4 : rule__RoutesRepository__Group_5__4__Impl ;
+    public final void rule__RoutesRepository__Group_5__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22049:1: ( rule__RoutesRepository__Group_5__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22050:2: rule__RoutesRepository__Group_5__4__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_5__4__Impl_in_rule__RoutesRepository__Group_5__443701);
+            rule__RoutesRepository__Group_5__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_5__4"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_5__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22056:1: rule__RoutesRepository__Group_5__4__Impl : ( '}' ) ;
+    public final void rule__RoutesRepository__Group_5__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22060:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22061:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22061:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22062:1: '}'
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_5_4()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__RoutesRepository__Group_5__4__Impl43729); 
+             after(grammarAccess.getRoutesRepositoryAccess().getRightCurlyBracketKeyword_5_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_5__4__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_5_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22085:1: rule__RoutesRepository__Group_5_3__0 : rule__RoutesRepository__Group_5_3__0__Impl rule__RoutesRepository__Group_5_3__1 ;
+    public final void rule__RoutesRepository__Group_5_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22089:1: ( rule__RoutesRepository__Group_5_3__0__Impl rule__RoutesRepository__Group_5_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22090:2: rule__RoutesRepository__Group_5_3__0__Impl rule__RoutesRepository__Group_5_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_5_3__0__Impl_in_rule__RoutesRepository__Group_5_3__043770);
+            rule__RoutesRepository__Group_5_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_5_3__1_in_rule__RoutesRepository__Group_5_3__043773);
+            rule__RoutesRepository__Group_5_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_5_3__0"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_5_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22097:1: rule__RoutesRepository__Group_5_3__0__Impl : ( ',' ) ;
+    public final void rule__RoutesRepository__Group_5_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22101:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22102:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22102:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22103:1: ','
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getCommaKeyword_5_3_0()); 
+            match(input,31,FollowSets001.FOLLOW_31_in_rule__RoutesRepository__Group_5_3__0__Impl43801); 
+             after(grammarAccess.getRoutesRepositoryAccess().getCommaKeyword_5_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_5_3__0__Impl"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_5_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22116:1: rule__RoutesRepository__Group_5_3__1 : rule__RoutesRepository__Group_5_3__1__Impl ;
+    public final void rule__RoutesRepository__Group_5_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22120:1: ( rule__RoutesRepository__Group_5_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22121:2: rule__RoutesRepository__Group_5_3__1__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__Group_5_3__1__Impl_in_rule__RoutesRepository__Group_5_3__143832);
+            rule__RoutesRepository__Group_5_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_5_3__1"
+
+
+    // $ANTLR start "rule__RoutesRepository__Group_5_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22127:1: rule__RoutesRepository__Group_5_3__1__Impl : ( ( rule__RoutesRepository__DirectionsAssignment_5_3_1 ) ) ;
+    public final void rule__RoutesRepository__Group_5_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22131:1: ( ( ( rule__RoutesRepository__DirectionsAssignment_5_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22132:1: ( ( rule__RoutesRepository__DirectionsAssignment_5_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22132:1: ( ( rule__RoutesRepository__DirectionsAssignment_5_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22133:1: ( rule__RoutesRepository__DirectionsAssignment_5_3_1 )
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getDirectionsAssignment_5_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22134:1: ( rule__RoutesRepository__DirectionsAssignment_5_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22134:2: rule__RoutesRepository__DirectionsAssignment_5_3_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__RoutesRepository__DirectionsAssignment_5_3_1_in_rule__RoutesRepository__Group_5_3__1__Impl43859);
+            rule__RoutesRepository__DirectionsAssignment_5_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRoutesRepositoryAccess().getDirectionsAssignment_5_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__Group_5_3__1__Impl"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22148:1: rule__ProtocolStack__Group__0 : rule__ProtocolStack__Group__0__Impl rule__ProtocolStack__Group__1 ;
+    public final void rule__ProtocolStack__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22152:1: ( rule__ProtocolStack__Group__0__Impl rule__ProtocolStack__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22153:2: rule__ProtocolStack__Group__0__Impl rule__ProtocolStack__Group__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group__0__Impl_in_rule__ProtocolStack__Group__043893);
+            rule__ProtocolStack__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group__1_in_rule__ProtocolStack__Group__043896);
+            rule__ProtocolStack__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__0"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22160:1: rule__ProtocolStack__Group__0__Impl : ( 'ProtocolStack' ) ;
+    public final void rule__ProtocolStack__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22164:1: ( ( 'ProtocolStack' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22165:1: ( 'ProtocolStack' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22165:1: ( 'ProtocolStack' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22166:1: 'ProtocolStack'
+            {
+             before(grammarAccess.getProtocolStackAccess().getProtocolStackKeyword_0()); 
+            match(input,137,FollowSets001.FOLLOW_137_in_rule__ProtocolStack__Group__0__Impl43924); 
+             after(grammarAccess.getProtocolStackAccess().getProtocolStackKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22179:1: rule__ProtocolStack__Group__1 : rule__ProtocolStack__Group__1__Impl rule__ProtocolStack__Group__2 ;
+    public final void rule__ProtocolStack__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22183:1: ( rule__ProtocolStack__Group__1__Impl rule__ProtocolStack__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22184:2: rule__ProtocolStack__Group__1__Impl rule__ProtocolStack__Group__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group__1__Impl_in_rule__ProtocolStack__Group__143955);
+            rule__ProtocolStack__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group__2_in_rule__ProtocolStack__Group__143958);
+            rule__ProtocolStack__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__1"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22191:1: rule__ProtocolStack__Group__1__Impl : ( ( rule__ProtocolStack__NameAssignment_1 ) ) ;
+    public final void rule__ProtocolStack__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22195:1: ( ( ( rule__ProtocolStack__NameAssignment_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22196:1: ( ( rule__ProtocolStack__NameAssignment_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22196:1: ( ( rule__ProtocolStack__NameAssignment_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22197:1: ( rule__ProtocolStack__NameAssignment_1 )
+            {
+             before(grammarAccess.getProtocolStackAccess().getNameAssignment_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22198:1: ( rule__ProtocolStack__NameAssignment_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22198:2: rule__ProtocolStack__NameAssignment_1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__NameAssignment_1_in_rule__ProtocolStack__Group__1__Impl43985);
+            rule__ProtocolStack__NameAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProtocolStackAccess().getNameAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22208:1: rule__ProtocolStack__Group__2 : rule__ProtocolStack__Group__2__Impl rule__ProtocolStack__Group__3 ;
+    public final void rule__ProtocolStack__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22212:1: ( rule__ProtocolStack__Group__2__Impl rule__ProtocolStack__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22213:2: rule__ProtocolStack__Group__2__Impl rule__ProtocolStack__Group__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group__2__Impl_in_rule__ProtocolStack__Group__244015);
+            rule__ProtocolStack__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group__3_in_rule__ProtocolStack__Group__244018);
+            rule__ProtocolStack__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__2"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22220:1: rule__ProtocolStack__Group__2__Impl : ( '{' ) ;
+    public final void rule__ProtocolStack__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22224:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22225:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22225:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22226:1: '{'
+            {
+             before(grammarAccess.getProtocolStackAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__ProtocolStack__Group__2__Impl44046); 
+             after(grammarAccess.getProtocolStackAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22239:1: rule__ProtocolStack__Group__3 : rule__ProtocolStack__Group__3__Impl rule__ProtocolStack__Group__4 ;
+    public final void rule__ProtocolStack__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22243:1: ( rule__ProtocolStack__Group__3__Impl rule__ProtocolStack__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22244:2: rule__ProtocolStack__Group__3__Impl rule__ProtocolStack__Group__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group__3__Impl_in_rule__ProtocolStack__Group__344077);
+            rule__ProtocolStack__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group__4_in_rule__ProtocolStack__Group__344080);
+            rule__ProtocolStack__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__3"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22251:1: rule__ProtocolStack__Group__3__Impl : ( ( rule__ProtocolStack__Group_3__0 )? ) ;
+    public final void rule__ProtocolStack__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22255:1: ( ( ( rule__ProtocolStack__Group_3__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22256:1: ( ( rule__ProtocolStack__Group_3__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22256:1: ( ( rule__ProtocolStack__Group_3__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22257:1: ( rule__ProtocolStack__Group_3__0 )?
+            {
+             before(grammarAccess.getProtocolStackAccess().getGroup_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22258:1: ( rule__ProtocolStack__Group_3__0 )?
+            int alt109=2;
+            int LA109_0 = input.LA(1);
+
+            if ( (LA109_0==67) ) {
+                alt109=1;
+            }
+            switch (alt109) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22258:2: rule__ProtocolStack__Group_3__0
+                    {
+                    pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group_3__0_in_rule__ProtocolStack__Group__3__Impl44107);
+                    rule__ProtocolStack__Group_3__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getProtocolStackAccess().getGroup_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22268:1: rule__ProtocolStack__Group__4 : rule__ProtocolStack__Group__4__Impl rule__ProtocolStack__Group__5 ;
+    public final void rule__ProtocolStack__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22272:1: ( rule__ProtocolStack__Group__4__Impl rule__ProtocolStack__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22273:2: rule__ProtocolStack__Group__4__Impl rule__ProtocolStack__Group__5
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group__4__Impl_in_rule__ProtocolStack__Group__444138);
+            rule__ProtocolStack__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group__5_in_rule__ProtocolStack__Group__444141);
+            rule__ProtocolStack__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__4"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22280:1: rule__ProtocolStack__Group__4__Impl : ( 'layers' ) ;
+    public final void rule__ProtocolStack__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22284:1: ( ( 'layers' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22285:1: ( 'layers' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22285:1: ( 'layers' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22286:1: 'layers'
+            {
+             before(grammarAccess.getProtocolStackAccess().getLayersKeyword_4()); 
+            match(input,138,FollowSets001.FOLLOW_138_in_rule__ProtocolStack__Group__4__Impl44169); 
+             after(grammarAccess.getProtocolStackAccess().getLayersKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22299:1: rule__ProtocolStack__Group__5 : rule__ProtocolStack__Group__5__Impl rule__ProtocolStack__Group__6 ;
+    public final void rule__ProtocolStack__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22303:1: ( rule__ProtocolStack__Group__5__Impl rule__ProtocolStack__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22304:2: rule__ProtocolStack__Group__5__Impl rule__ProtocolStack__Group__6
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group__5__Impl_in_rule__ProtocolStack__Group__544200);
+            rule__ProtocolStack__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group__6_in_rule__ProtocolStack__Group__544203);
+            rule__ProtocolStack__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__5"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22311:1: rule__ProtocolStack__Group__5__Impl : ( '{' ) ;
+    public final void rule__ProtocolStack__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22315:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22316:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22316:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22317:1: '{'
+            {
+             before(grammarAccess.getProtocolStackAccess().getLeftCurlyBracketKeyword_5()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__ProtocolStack__Group__5__Impl44231); 
+             after(grammarAccess.getProtocolStackAccess().getLeftCurlyBracketKeyword_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__5__Impl"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22330:1: rule__ProtocolStack__Group__6 : rule__ProtocolStack__Group__6__Impl rule__ProtocolStack__Group__7 ;
+    public final void rule__ProtocolStack__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22334:1: ( rule__ProtocolStack__Group__6__Impl rule__ProtocolStack__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22335:2: rule__ProtocolStack__Group__6__Impl rule__ProtocolStack__Group__7
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group__6__Impl_in_rule__ProtocolStack__Group__644262);
+            rule__ProtocolStack__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group__7_in_rule__ProtocolStack__Group__644265);
+            rule__ProtocolStack__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__6"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22342:1: rule__ProtocolStack__Group__6__Impl : ( ( rule__ProtocolStack__LayersAssignment_6 ) ) ;
+    public final void rule__ProtocolStack__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22346:1: ( ( ( rule__ProtocolStack__LayersAssignment_6 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22347:1: ( ( rule__ProtocolStack__LayersAssignment_6 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22347:1: ( ( rule__ProtocolStack__LayersAssignment_6 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22348:1: ( rule__ProtocolStack__LayersAssignment_6 )
+            {
+             before(grammarAccess.getProtocolStackAccess().getLayersAssignment_6()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22349:1: ( rule__ProtocolStack__LayersAssignment_6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22349:2: rule__ProtocolStack__LayersAssignment_6
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__LayersAssignment_6_in_rule__ProtocolStack__Group__6__Impl44292);
+            rule__ProtocolStack__LayersAssignment_6();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProtocolStackAccess().getLayersAssignment_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__6__Impl"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22359:1: rule__ProtocolStack__Group__7 : rule__ProtocolStack__Group__7__Impl rule__ProtocolStack__Group__8 ;
+    public final void rule__ProtocolStack__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22363:1: ( rule__ProtocolStack__Group__7__Impl rule__ProtocolStack__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22364:2: rule__ProtocolStack__Group__7__Impl rule__ProtocolStack__Group__8
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group__7__Impl_in_rule__ProtocolStack__Group__744322);
+            rule__ProtocolStack__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group__8_in_rule__ProtocolStack__Group__744325);
+            rule__ProtocolStack__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__7"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22371:1: rule__ProtocolStack__Group__7__Impl : ( ( rule__ProtocolStack__Group_7__0 )* ) ;
+    public final void rule__ProtocolStack__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22375:1: ( ( ( rule__ProtocolStack__Group_7__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22376:1: ( ( rule__ProtocolStack__Group_7__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22376:1: ( ( rule__ProtocolStack__Group_7__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22377:1: ( rule__ProtocolStack__Group_7__0 )*
+            {
+             before(grammarAccess.getProtocolStackAccess().getGroup_7()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22378:1: ( rule__ProtocolStack__Group_7__0 )*
+            loop110:
+            do {
+                int alt110=2;
+                int LA110_0 = input.LA(1);
+
+                if ( (LA110_0==31) ) {
+                    alt110=1;
+                }
+
+
+                switch (alt110) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22378:2: rule__ProtocolStack__Group_7__0
+            	    {
+            	    pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group_7__0_in_rule__ProtocolStack__Group__7__Impl44352);
+            	    rule__ProtocolStack__Group_7__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop110;
+                }
+            } while (true);
+
+             after(grammarAccess.getProtocolStackAccess().getGroup_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__7__Impl"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22388:1: rule__ProtocolStack__Group__8 : rule__ProtocolStack__Group__8__Impl rule__ProtocolStack__Group__9 ;
+    public final void rule__ProtocolStack__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22392:1: ( rule__ProtocolStack__Group__8__Impl rule__ProtocolStack__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22393:2: rule__ProtocolStack__Group__8__Impl rule__ProtocolStack__Group__9
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group__8__Impl_in_rule__ProtocolStack__Group__844383);
+            rule__ProtocolStack__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group__9_in_rule__ProtocolStack__Group__844386);
+            rule__ProtocolStack__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__8"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22400:1: rule__ProtocolStack__Group__8__Impl : ( '}' ) ;
+    public final void rule__ProtocolStack__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22404:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22405:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22405:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22406:1: '}'
+            {
+             before(grammarAccess.getProtocolStackAccess().getRightCurlyBracketKeyword_8()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__ProtocolStack__Group__8__Impl44414); 
+             after(grammarAccess.getProtocolStackAccess().getRightCurlyBracketKeyword_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__8__Impl"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22419:1: rule__ProtocolStack__Group__9 : rule__ProtocolStack__Group__9__Impl ;
+    public final void rule__ProtocolStack__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22423:1: ( rule__ProtocolStack__Group__9__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22424:2: rule__ProtocolStack__Group__9__Impl
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group__9__Impl_in_rule__ProtocolStack__Group__944445);
+            rule__ProtocolStack__Group__9__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__9"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22430:1: rule__ProtocolStack__Group__9__Impl : ( '}' ) ;
+    public final void rule__ProtocolStack__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22434:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22435:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22435:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22436:1: '}'
+            {
+             before(grammarAccess.getProtocolStackAccess().getRightCurlyBracketKeyword_9()); 
+            match(input,29,FollowSets001.FOLLOW_29_in_rule__ProtocolStack__Group__9__Impl44473); 
+             after(grammarAccess.getProtocolStackAccess().getRightCurlyBracketKeyword_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group__9__Impl"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22469:1: rule__ProtocolStack__Group_3__0 : rule__ProtocolStack__Group_3__0__Impl rule__ProtocolStack__Group_3__1 ;
+    public final void rule__ProtocolStack__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22473:1: ( rule__ProtocolStack__Group_3__0__Impl rule__ProtocolStack__Group_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22474:2: rule__ProtocolStack__Group_3__0__Impl rule__ProtocolStack__Group_3__1
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group_3__0__Impl_in_rule__ProtocolStack__Group_3__044524);
+            rule__ProtocolStack__Group_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group_3__1_in_rule__ProtocolStack__Group_3__044527);
+            rule__ProtocolStack__Group_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group_3__0"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22481:1: rule__ProtocolStack__Group_3__0__Impl : ( 'alternativeNames' ) ;
+    public final void rule__ProtocolStack__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22485:1: ( ( 'alternativeNames' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22486:1: ( 'alternativeNames' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22486:1: ( 'alternativeNames' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22487:1: 'alternativeNames'
+            {
+             before(grammarAccess.getProtocolStackAccess().getAlternativeNamesKeyword_3_0()); 
+            match(input,67,FollowSets001.FOLLOW_67_in_rule__ProtocolStack__Group_3__0__Impl44555); 
+             after(grammarAccess.getProtocolStackAccess().getAlternativeNamesKeyword_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22500:1: rule__ProtocolStack__Group_3__1 : rule__ProtocolStack__Group_3__1__Impl rule__ProtocolStack__Group_3__2 ;
+    public final void rule__ProtocolStack__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22504:1: ( rule__ProtocolStack__Group_3__1__Impl rule__ProtocolStack__Group_3__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22505:2: rule__ProtocolStack__Group_3__1__Impl rule__ProtocolStack__Group_3__2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group_3__1__Impl_in_rule__ProtocolStack__Group_3__144586);
+            rule__ProtocolStack__Group_3__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group_3__2_in_rule__ProtocolStack__Group_3__144589);
+            rule__ProtocolStack__Group_3__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group_3__1"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22512:1: rule__ProtocolStack__Group_3__1__Impl : ( '{' ) ;
+    public final void rule__ProtocolStack__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22516:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22517:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22517:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22518:1: '{'
+            {
+             before(grammarAccess.getProtocolStackAccess().getLeftCurlyBracketKeyword_3_1()); 
+            match(input,23,FollowSets001.FOLLOW_23_in_rule__ProtocolStack__Group_3__1__Impl44617); 
+             after(grammarAccess.getProtocolStackAccess().getLeftCurlyBracketKeyword_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group_3__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22531:1: rule__ProtocolStack__Group_3__2 : rule__ProtocolStack__Group_3__2__Impl rule__ProtocolStack__Group_3__3 ;
+    public final void rule__ProtocolStack__Group_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22535:1: ( rule__ProtocolStack__Group_3__2__Impl rule__ProtocolStack__Group_3__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22536:2: rule__ProtocolStack__Group_3__2__Impl rule__ProtocolStack__Group_3__3
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group_3__2__Impl_in_rule__ProtocolStack__Group_3__244648);
+            rule__ProtocolStack__Group_3__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group_3__3_in_rule__ProtocolStack__Group_3__244651);
+            rule__ProtocolStack__Group_3__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group_3__2"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group_3__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22543:1: rule__ProtocolStack__Group_3__2__Impl : ( ( rule__ProtocolStack__AlternativeNamesAssignment_3_2 ) ) ;
+    public final void rule__ProtocolStack__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22547:1: ( ( ( rule__ProtocolStack__AlternativeNamesAssignment_3_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22548:1: ( ( rule__ProtocolStack__AlternativeNamesAssignment_3_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22548:1: ( ( rule__ProtocolStack__AlternativeNamesAssignment_3_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22549:1: ( rule__ProtocolStack__AlternativeNamesAssignment_3_2 )
+            {
+             before(grammarAccess.getProtocolStackAccess().getAlternativeNamesAssignment_3_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22550:1: ( rule__ProtocolStack__AlternativeNamesAssignment_3_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22550:2: rule__ProtocolStack__AlternativeNamesAssignment_3_2
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__AlternativeNamesAssignment_3_2_in_rule__ProtocolStack__Group_3__2__Impl44678);
+            rule__ProtocolStack__AlternativeNamesAssignment_3_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProtocolStackAccess().getAlternativeNamesAssignment_3_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group_3__2__Impl"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group_3__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22560:1: rule__ProtocolStack__Group_3__3 : rule__ProtocolStack__Group_3__3__Impl rule__ProtocolStack__Group_3__4 ;
+    public final void rule__ProtocolStack__Group_3__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22564:1: ( rule__ProtocolStack__Group_3__3__Impl rule__ProtocolStack__Group_3__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22565:2: rule__ProtocolStack__Group_3__3__Impl rule__ProtocolStack__Group_3__4
+            {
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group_3__3__Impl_in_rule__ProtocolStack__Group_3__344708);
+            rule__ProtocolStack__Group_3__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets001.FOLLOW_rule__ProtocolStack__Group_3__4_in_rule__ProtocolStack__Group_3__344711);
+            rule__ProtocolStack__Group_3__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group_3__3"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group_3__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22572:1: rule__ProtocolStack__Group_3__3__Impl : ( ( rule__ProtocolStack__Group_3_3__0 )* ) ;
+    public final void rule__ProtocolStack__Group_3__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22576:1: ( ( ( rule__ProtocolStack__Group_3_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22577:1: ( ( rule__ProtocolStack__Group_3_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22577:1: ( ( rule__ProtocolStack__Group_3_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22578:1: ( rule__ProtocolStack__Group_3_3__0 )*
+            {
+             before(grammarAccess.getProtocolStackAccess().getGroup_3_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22579:1: ( rule__ProtocolStack__Group_3_3__0 )*
+            loop111:
+            do {
+                int alt111=2;
+                int LA111_0 = input.LA(1);
+
+                if ( (LA111_0==31) ) {
+                    alt111=1;
+                }
+
+
+                switch (alt111) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22579:2: rule__ProtocolStack__Group_3_3__0
+            	    {
+            	    pushFollow(FollowSets002.FOLLOW_rule__ProtocolStack__Group_3_3__0_in_rule__ProtocolStack__Group_3__3__Impl44738);
+            	    rule__ProtocolStack__Group_3_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop111;
+                }
+            } while (true);
+
+             after(grammarAccess.getProtocolStackAccess().getGroup_3_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group_3__3__Impl"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group_3__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22589:1: rule__ProtocolStack__Group_3__4 : rule__ProtocolStack__Group_3__4__Impl ;
+    public final void rule__ProtocolStack__Group_3__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22593:1: ( rule__ProtocolStack__Group_3__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22594:2: rule__ProtocolStack__Group_3__4__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolStack__Group_3__4__Impl_in_rule__ProtocolStack__Group_3__444769);
+            rule__ProtocolStack__Group_3__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group_3__4"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group_3__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22600:1: rule__ProtocolStack__Group_3__4__Impl : ( '}' ) ;
+    public final void rule__ProtocolStack__Group_3__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22604:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22605:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22605:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22606:1: '}'
+            {
+             before(grammarAccess.getProtocolStackAccess().getRightCurlyBracketKeyword_3_4()); 
+            match(input,29,FollowSets002.FOLLOW_29_in_rule__ProtocolStack__Group_3__4__Impl44797); 
+             after(grammarAccess.getProtocolStackAccess().getRightCurlyBracketKeyword_3_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group_3__4__Impl"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group_3_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22629:1: rule__ProtocolStack__Group_3_3__0 : rule__ProtocolStack__Group_3_3__0__Impl rule__ProtocolStack__Group_3_3__1 ;
+    public final void rule__ProtocolStack__Group_3_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22633:1: ( rule__ProtocolStack__Group_3_3__0__Impl rule__ProtocolStack__Group_3_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22634:2: rule__ProtocolStack__Group_3_3__0__Impl rule__ProtocolStack__Group_3_3__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolStack__Group_3_3__0__Impl_in_rule__ProtocolStack__Group_3_3__044838);
+            rule__ProtocolStack__Group_3_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolStack__Group_3_3__1_in_rule__ProtocolStack__Group_3_3__044841);
+            rule__ProtocolStack__Group_3_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group_3_3__0"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group_3_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22641:1: rule__ProtocolStack__Group_3_3__0__Impl : ( ',' ) ;
+    public final void rule__ProtocolStack__Group_3_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22645:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22646:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22646:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22647:1: ','
+            {
+             before(grammarAccess.getProtocolStackAccess().getCommaKeyword_3_3_0()); 
+            match(input,31,FollowSets002.FOLLOW_31_in_rule__ProtocolStack__Group_3_3__0__Impl44869); 
+             after(grammarAccess.getProtocolStackAccess().getCommaKeyword_3_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group_3_3__0__Impl"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group_3_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22660:1: rule__ProtocolStack__Group_3_3__1 : rule__ProtocolStack__Group_3_3__1__Impl ;
+    public final void rule__ProtocolStack__Group_3_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22664:1: ( rule__ProtocolStack__Group_3_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22665:2: rule__ProtocolStack__Group_3_3__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolStack__Group_3_3__1__Impl_in_rule__ProtocolStack__Group_3_3__144900);
+            rule__ProtocolStack__Group_3_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group_3_3__1"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group_3_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22671:1: rule__ProtocolStack__Group_3_3__1__Impl : ( ( rule__ProtocolStack__AlternativeNamesAssignment_3_3_1 ) ) ;
+    public final void rule__ProtocolStack__Group_3_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22675:1: ( ( ( rule__ProtocolStack__AlternativeNamesAssignment_3_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22676:1: ( ( rule__ProtocolStack__AlternativeNamesAssignment_3_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22676:1: ( ( rule__ProtocolStack__AlternativeNamesAssignment_3_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22677:1: ( rule__ProtocolStack__AlternativeNamesAssignment_3_3_1 )
+            {
+             before(grammarAccess.getProtocolStackAccess().getAlternativeNamesAssignment_3_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22678:1: ( rule__ProtocolStack__AlternativeNamesAssignment_3_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22678:2: rule__ProtocolStack__AlternativeNamesAssignment_3_3_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolStack__AlternativeNamesAssignment_3_3_1_in_rule__ProtocolStack__Group_3_3__1__Impl44927);
+            rule__ProtocolStack__AlternativeNamesAssignment_3_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProtocolStackAccess().getAlternativeNamesAssignment_3_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group_3_3__1__Impl"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group_7__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22692:1: rule__ProtocolStack__Group_7__0 : rule__ProtocolStack__Group_7__0__Impl rule__ProtocolStack__Group_7__1 ;
+    public final void rule__ProtocolStack__Group_7__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22696:1: ( rule__ProtocolStack__Group_7__0__Impl rule__ProtocolStack__Group_7__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22697:2: rule__ProtocolStack__Group_7__0__Impl rule__ProtocolStack__Group_7__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolStack__Group_7__0__Impl_in_rule__ProtocolStack__Group_7__044961);
+            rule__ProtocolStack__Group_7__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolStack__Group_7__1_in_rule__ProtocolStack__Group_7__044964);
+            rule__ProtocolStack__Group_7__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group_7__0"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group_7__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22704:1: rule__ProtocolStack__Group_7__0__Impl : ( ',' ) ;
+    public final void rule__ProtocolStack__Group_7__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22708:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22709:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22709:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22710:1: ','
+            {
+             before(grammarAccess.getProtocolStackAccess().getCommaKeyword_7_0()); 
+            match(input,31,FollowSets002.FOLLOW_31_in_rule__ProtocolStack__Group_7__0__Impl44992); 
+             after(grammarAccess.getProtocolStackAccess().getCommaKeyword_7_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group_7__0__Impl"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group_7__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22723:1: rule__ProtocolStack__Group_7__1 : rule__ProtocolStack__Group_7__1__Impl ;
+    public final void rule__ProtocolStack__Group_7__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22727:1: ( rule__ProtocolStack__Group_7__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22728:2: rule__ProtocolStack__Group_7__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolStack__Group_7__1__Impl_in_rule__ProtocolStack__Group_7__145023);
+            rule__ProtocolStack__Group_7__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group_7__1"
+
+
+    // $ANTLR start "rule__ProtocolStack__Group_7__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22734:1: rule__ProtocolStack__Group_7__1__Impl : ( ( rule__ProtocolStack__LayersAssignment_7_1 ) ) ;
+    public final void rule__ProtocolStack__Group_7__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22738:1: ( ( ( rule__ProtocolStack__LayersAssignment_7_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22739:1: ( ( rule__ProtocolStack__LayersAssignment_7_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22739:1: ( ( rule__ProtocolStack__LayersAssignment_7_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22740:1: ( rule__ProtocolStack__LayersAssignment_7_1 )
+            {
+             before(grammarAccess.getProtocolStackAccess().getLayersAssignment_7_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22741:1: ( rule__ProtocolStack__LayersAssignment_7_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22741:2: rule__ProtocolStack__LayersAssignment_7_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolStack__LayersAssignment_7_1_in_rule__ProtocolStack__Group_7__1__Impl45050);
+            rule__ProtocolStack__LayersAssignment_7_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProtocolStackAccess().getLayersAssignment_7_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__Group_7__1__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22755:1: rule__ProtocolLayer__Group__0 : rule__ProtocolLayer__Group__0__Impl rule__ProtocolLayer__Group__1 ;
+    public final void rule__ProtocolLayer__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22759:1: ( rule__ProtocolLayer__Group__0__Impl rule__ProtocolLayer__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22760:2: rule__ProtocolLayer__Group__0__Impl rule__ProtocolLayer__Group__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group__0__Impl_in_rule__ProtocolLayer__Group__045084);
+            rule__ProtocolLayer__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group__1_in_rule__ProtocolLayer__Group__045087);
+            rule__ProtocolLayer__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group__0"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22767:1: rule__ProtocolLayer__Group__0__Impl : ( 'ProtocolLayer' ) ;
+    public final void rule__ProtocolLayer__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22771:1: ( ( 'ProtocolLayer' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22772:1: ( 'ProtocolLayer' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22772:1: ( 'ProtocolLayer' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22773:1: 'ProtocolLayer'
+            {
+             before(grammarAccess.getProtocolLayerAccess().getProtocolLayerKeyword_0()); 
+            match(input,139,FollowSets002.FOLLOW_139_in_rule__ProtocolLayer__Group__0__Impl45115); 
+             after(grammarAccess.getProtocolLayerAccess().getProtocolLayerKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22786:1: rule__ProtocolLayer__Group__1 : rule__ProtocolLayer__Group__1__Impl rule__ProtocolLayer__Group__2 ;
+    public final void rule__ProtocolLayer__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22790:1: ( rule__ProtocolLayer__Group__1__Impl rule__ProtocolLayer__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22791:2: rule__ProtocolLayer__Group__1__Impl rule__ProtocolLayer__Group__2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group__1__Impl_in_rule__ProtocolLayer__Group__145146);
+            rule__ProtocolLayer__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group__2_in_rule__ProtocolLayer__Group__145149);
+            rule__ProtocolLayer__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group__1"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22798:1: rule__ProtocolLayer__Group__1__Impl : ( ( rule__ProtocolLayer__NameAssignment_1 ) ) ;
+    public final void rule__ProtocolLayer__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22802:1: ( ( ( rule__ProtocolLayer__NameAssignment_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22803:1: ( ( rule__ProtocolLayer__NameAssignment_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22803:1: ( ( rule__ProtocolLayer__NameAssignment_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22804:1: ( rule__ProtocolLayer__NameAssignment_1 )
+            {
+             before(grammarAccess.getProtocolLayerAccess().getNameAssignment_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22805:1: ( rule__ProtocolLayer__NameAssignment_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22805:2: rule__ProtocolLayer__NameAssignment_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__NameAssignment_1_in_rule__ProtocolLayer__Group__1__Impl45176);
+            rule__ProtocolLayer__NameAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProtocolLayerAccess().getNameAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22815:1: rule__ProtocolLayer__Group__2 : rule__ProtocolLayer__Group__2__Impl rule__ProtocolLayer__Group__3 ;
+    public final void rule__ProtocolLayer__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22819:1: ( rule__ProtocolLayer__Group__2__Impl rule__ProtocolLayer__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22820:2: rule__ProtocolLayer__Group__2__Impl rule__ProtocolLayer__Group__3
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group__2__Impl_in_rule__ProtocolLayer__Group__245206);
+            rule__ProtocolLayer__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group__3_in_rule__ProtocolLayer__Group__245209);
+            rule__ProtocolLayer__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group__2"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22827:1: rule__ProtocolLayer__Group__2__Impl : ( '{' ) ;
+    public final void rule__ProtocolLayer__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22831:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22832:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22832:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22833:1: '{'
+            {
+             before(grammarAccess.getProtocolLayerAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets002.FOLLOW_23_in_rule__ProtocolLayer__Group__2__Impl45237); 
+             after(grammarAccess.getProtocolLayerAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22846:1: rule__ProtocolLayer__Group__3 : rule__ProtocolLayer__Group__3__Impl rule__ProtocolLayer__Group__4 ;
+    public final void rule__ProtocolLayer__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22850:1: ( rule__ProtocolLayer__Group__3__Impl rule__ProtocolLayer__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22851:2: rule__ProtocolLayer__Group__3__Impl rule__ProtocolLayer__Group__4
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group__3__Impl_in_rule__ProtocolLayer__Group__345268);
+            rule__ProtocolLayer__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group__4_in_rule__ProtocolLayer__Group__345271);
+            rule__ProtocolLayer__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group__3"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22858:1: rule__ProtocolLayer__Group__3__Impl : ( ( rule__ProtocolLayer__Group_3__0 )? ) ;
+    public final void rule__ProtocolLayer__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22862:1: ( ( ( rule__ProtocolLayer__Group_3__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22863:1: ( ( rule__ProtocolLayer__Group_3__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22863:1: ( ( rule__ProtocolLayer__Group_3__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22864:1: ( rule__ProtocolLayer__Group_3__0 )?
+            {
+             before(grammarAccess.getProtocolLayerAccess().getGroup_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22865:1: ( rule__ProtocolLayer__Group_3__0 )?
+            int alt112=2;
+            int LA112_0 = input.LA(1);
+
+            if ( (LA112_0==67) ) {
+                alt112=1;
+            }
+            switch (alt112) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22865:2: rule__ProtocolLayer__Group_3__0
+                    {
+                    pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_3__0_in_rule__ProtocolLayer__Group__3__Impl45298);
+                    rule__ProtocolLayer__Group_3__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getProtocolLayerAccess().getGroup_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22875:1: rule__ProtocolLayer__Group__4 : rule__ProtocolLayer__Group__4__Impl rule__ProtocolLayer__Group__5 ;
+    public final void rule__ProtocolLayer__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22879:1: ( rule__ProtocolLayer__Group__4__Impl rule__ProtocolLayer__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22880:2: rule__ProtocolLayer__Group__4__Impl rule__ProtocolLayer__Group__5
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group__4__Impl_in_rule__ProtocolLayer__Group__445329);
+            rule__ProtocolLayer__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group__5_in_rule__ProtocolLayer__Group__445332);
+            rule__ProtocolLayer__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group__4"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22887:1: rule__ProtocolLayer__Group__4__Impl : ( 'protocol' ) ;
+    public final void rule__ProtocolLayer__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22891:1: ( ( 'protocol' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22892:1: ( 'protocol' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22892:1: ( 'protocol' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22893:1: 'protocol'
+            {
+             before(grammarAccess.getProtocolLayerAccess().getProtocolKeyword_4()); 
+            match(input,140,FollowSets002.FOLLOW_140_in_rule__ProtocolLayer__Group__4__Impl45360); 
+             after(grammarAccess.getProtocolLayerAccess().getProtocolKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22906:1: rule__ProtocolLayer__Group__5 : rule__ProtocolLayer__Group__5__Impl rule__ProtocolLayer__Group__6 ;
+    public final void rule__ProtocolLayer__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22910:1: ( rule__ProtocolLayer__Group__5__Impl rule__ProtocolLayer__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22911:2: rule__ProtocolLayer__Group__5__Impl rule__ProtocolLayer__Group__6
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group__5__Impl_in_rule__ProtocolLayer__Group__545391);
+            rule__ProtocolLayer__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group__6_in_rule__ProtocolLayer__Group__545394);
+            rule__ProtocolLayer__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group__5"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22918:1: rule__ProtocolLayer__Group__5__Impl : ( ( rule__ProtocolLayer__ProtocolAssignment_5 ) ) ;
+    public final void rule__ProtocolLayer__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22922:1: ( ( ( rule__ProtocolLayer__ProtocolAssignment_5 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22923:1: ( ( rule__ProtocolLayer__ProtocolAssignment_5 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22923:1: ( ( rule__ProtocolLayer__ProtocolAssignment_5 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22924:1: ( rule__ProtocolLayer__ProtocolAssignment_5 )
+            {
+             before(grammarAccess.getProtocolLayerAccess().getProtocolAssignment_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22925:1: ( rule__ProtocolLayer__ProtocolAssignment_5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22925:2: rule__ProtocolLayer__ProtocolAssignment_5
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__ProtocolAssignment_5_in_rule__ProtocolLayer__Group__5__Impl45421);
+            rule__ProtocolLayer__ProtocolAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProtocolLayerAccess().getProtocolAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group__5__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22935:1: rule__ProtocolLayer__Group__6 : rule__ProtocolLayer__Group__6__Impl rule__ProtocolLayer__Group__7 ;
+    public final void rule__ProtocolLayer__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22939:1: ( rule__ProtocolLayer__Group__6__Impl rule__ProtocolLayer__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22940:2: rule__ProtocolLayer__Group__6__Impl rule__ProtocolLayer__Group__7
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group__6__Impl_in_rule__ProtocolLayer__Group__645451);
+            rule__ProtocolLayer__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group__7_in_rule__ProtocolLayer__Group__645454);
+            rule__ProtocolLayer__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group__6"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22947:1: rule__ProtocolLayer__Group__6__Impl : ( ( rule__ProtocolLayer__Group_6__0 )? ) ;
+    public final void rule__ProtocolLayer__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22951:1: ( ( ( rule__ProtocolLayer__Group_6__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22952:1: ( ( rule__ProtocolLayer__Group_6__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22952:1: ( ( rule__ProtocolLayer__Group_6__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22953:1: ( rule__ProtocolLayer__Group_6__0 )?
+            {
+             before(grammarAccess.getProtocolLayerAccess().getGroup_6()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22954:1: ( rule__ProtocolLayer__Group_6__0 )?
+            int alt113=2;
+            int LA113_0 = input.LA(1);
+
+            if ( (LA113_0==141) ) {
+                alt113=1;
+            }
+            switch (alt113) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22954:2: rule__ProtocolLayer__Group_6__0
+                    {
+                    pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_6__0_in_rule__ProtocolLayer__Group__6__Impl45481);
+                    rule__ProtocolLayer__Group_6__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getProtocolLayerAccess().getGroup_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group__6__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22964:1: rule__ProtocolLayer__Group__7 : rule__ProtocolLayer__Group__7__Impl rule__ProtocolLayer__Group__8 ;
+    public final void rule__ProtocolLayer__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22968:1: ( rule__ProtocolLayer__Group__7__Impl rule__ProtocolLayer__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22969:2: rule__ProtocolLayer__Group__7__Impl rule__ProtocolLayer__Group__8
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group__7__Impl_in_rule__ProtocolLayer__Group__745512);
+            rule__ProtocolLayer__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group__8_in_rule__ProtocolLayer__Group__745515);
+            rule__ProtocolLayer__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group__7"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22976:1: rule__ProtocolLayer__Group__7__Impl : ( ( rule__ProtocolLayer__Group_7__0 )? ) ;
+    public final void rule__ProtocolLayer__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22980:1: ( ( ( rule__ProtocolLayer__Group_7__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22981:1: ( ( rule__ProtocolLayer__Group_7__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22981:1: ( ( rule__ProtocolLayer__Group_7__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22982:1: ( rule__ProtocolLayer__Group_7__0 )?
+            {
+             before(grammarAccess.getProtocolLayerAccess().getGroup_7()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22983:1: ( rule__ProtocolLayer__Group_7__0 )?
+            int alt114=2;
+            int LA114_0 = input.LA(1);
+
+            if ( (LA114_0==142) ) {
+                alt114=1;
+            }
+            switch (alt114) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22983:2: rule__ProtocolLayer__Group_7__0
+                    {
+                    pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_7__0_in_rule__ProtocolLayer__Group__7__Impl45542);
+                    rule__ProtocolLayer__Group_7__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getProtocolLayerAccess().getGroup_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group__7__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22993:1: rule__ProtocolLayer__Group__8 : rule__ProtocolLayer__Group__8__Impl ;
+    public final void rule__ProtocolLayer__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22997:1: ( rule__ProtocolLayer__Group__8__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:22998:2: rule__ProtocolLayer__Group__8__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group__8__Impl_in_rule__ProtocolLayer__Group__845573);
+            rule__ProtocolLayer__Group__8__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group__8"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23004:1: rule__ProtocolLayer__Group__8__Impl : ( '}' ) ;
+    public final void rule__ProtocolLayer__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23008:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23009:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23009:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23010:1: '}'
+            {
+             before(grammarAccess.getProtocolLayerAccess().getRightCurlyBracketKeyword_8()); 
+            match(input,29,FollowSets002.FOLLOW_29_in_rule__ProtocolLayer__Group__8__Impl45601); 
+             after(grammarAccess.getProtocolLayerAccess().getRightCurlyBracketKeyword_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group__8__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23041:1: rule__ProtocolLayer__Group_3__0 : rule__ProtocolLayer__Group_3__0__Impl rule__ProtocolLayer__Group_3__1 ;
+    public final void rule__ProtocolLayer__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23045:1: ( rule__ProtocolLayer__Group_3__0__Impl rule__ProtocolLayer__Group_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23046:2: rule__ProtocolLayer__Group_3__0__Impl rule__ProtocolLayer__Group_3__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_3__0__Impl_in_rule__ProtocolLayer__Group_3__045650);
+            rule__ProtocolLayer__Group_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_3__1_in_rule__ProtocolLayer__Group_3__045653);
+            rule__ProtocolLayer__Group_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_3__0"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23053:1: rule__ProtocolLayer__Group_3__0__Impl : ( 'alternativeNames' ) ;
+    public final void rule__ProtocolLayer__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23057:1: ( ( 'alternativeNames' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23058:1: ( 'alternativeNames' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23058:1: ( 'alternativeNames' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23059:1: 'alternativeNames'
+            {
+             before(grammarAccess.getProtocolLayerAccess().getAlternativeNamesKeyword_3_0()); 
+            match(input,67,FollowSets002.FOLLOW_67_in_rule__ProtocolLayer__Group_3__0__Impl45681); 
+             after(grammarAccess.getProtocolLayerAccess().getAlternativeNamesKeyword_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23072:1: rule__ProtocolLayer__Group_3__1 : rule__ProtocolLayer__Group_3__1__Impl rule__ProtocolLayer__Group_3__2 ;
+    public final void rule__ProtocolLayer__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23076:1: ( rule__ProtocolLayer__Group_3__1__Impl rule__ProtocolLayer__Group_3__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23077:2: rule__ProtocolLayer__Group_3__1__Impl rule__ProtocolLayer__Group_3__2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_3__1__Impl_in_rule__ProtocolLayer__Group_3__145712);
+            rule__ProtocolLayer__Group_3__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_3__2_in_rule__ProtocolLayer__Group_3__145715);
+            rule__ProtocolLayer__Group_3__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_3__1"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23084:1: rule__ProtocolLayer__Group_3__1__Impl : ( '{' ) ;
+    public final void rule__ProtocolLayer__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23088:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23089:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23089:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23090:1: '{'
+            {
+             before(grammarAccess.getProtocolLayerAccess().getLeftCurlyBracketKeyword_3_1()); 
+            match(input,23,FollowSets002.FOLLOW_23_in_rule__ProtocolLayer__Group_3__1__Impl45743); 
+             after(grammarAccess.getProtocolLayerAccess().getLeftCurlyBracketKeyword_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_3__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23103:1: rule__ProtocolLayer__Group_3__2 : rule__ProtocolLayer__Group_3__2__Impl rule__ProtocolLayer__Group_3__3 ;
+    public final void rule__ProtocolLayer__Group_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23107:1: ( rule__ProtocolLayer__Group_3__2__Impl rule__ProtocolLayer__Group_3__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23108:2: rule__ProtocolLayer__Group_3__2__Impl rule__ProtocolLayer__Group_3__3
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_3__2__Impl_in_rule__ProtocolLayer__Group_3__245774);
+            rule__ProtocolLayer__Group_3__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_3__3_in_rule__ProtocolLayer__Group_3__245777);
+            rule__ProtocolLayer__Group_3__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_3__2"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_3__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23115:1: rule__ProtocolLayer__Group_3__2__Impl : ( ( rule__ProtocolLayer__AlternativeNamesAssignment_3_2 ) ) ;
+    public final void rule__ProtocolLayer__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23119:1: ( ( ( rule__ProtocolLayer__AlternativeNamesAssignment_3_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23120:1: ( ( rule__ProtocolLayer__AlternativeNamesAssignment_3_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23120:1: ( ( rule__ProtocolLayer__AlternativeNamesAssignment_3_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23121:1: ( rule__ProtocolLayer__AlternativeNamesAssignment_3_2 )
+            {
+             before(grammarAccess.getProtocolLayerAccess().getAlternativeNamesAssignment_3_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23122:1: ( rule__ProtocolLayer__AlternativeNamesAssignment_3_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23122:2: rule__ProtocolLayer__AlternativeNamesAssignment_3_2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__AlternativeNamesAssignment_3_2_in_rule__ProtocolLayer__Group_3__2__Impl45804);
+            rule__ProtocolLayer__AlternativeNamesAssignment_3_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProtocolLayerAccess().getAlternativeNamesAssignment_3_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_3__2__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_3__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23132:1: rule__ProtocolLayer__Group_3__3 : rule__ProtocolLayer__Group_3__3__Impl rule__ProtocolLayer__Group_3__4 ;
+    public final void rule__ProtocolLayer__Group_3__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23136:1: ( rule__ProtocolLayer__Group_3__3__Impl rule__ProtocolLayer__Group_3__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23137:2: rule__ProtocolLayer__Group_3__3__Impl rule__ProtocolLayer__Group_3__4
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_3__3__Impl_in_rule__ProtocolLayer__Group_3__345834);
+            rule__ProtocolLayer__Group_3__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_3__4_in_rule__ProtocolLayer__Group_3__345837);
+            rule__ProtocolLayer__Group_3__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_3__3"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_3__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23144:1: rule__ProtocolLayer__Group_3__3__Impl : ( ( rule__ProtocolLayer__Group_3_3__0 )* ) ;
+    public final void rule__ProtocolLayer__Group_3__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23148:1: ( ( ( rule__ProtocolLayer__Group_3_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23149:1: ( ( rule__ProtocolLayer__Group_3_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23149:1: ( ( rule__ProtocolLayer__Group_3_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23150:1: ( rule__ProtocolLayer__Group_3_3__0 )*
+            {
+             before(grammarAccess.getProtocolLayerAccess().getGroup_3_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23151:1: ( rule__ProtocolLayer__Group_3_3__0 )*
+            loop115:
+            do {
+                int alt115=2;
+                int LA115_0 = input.LA(1);
+
+                if ( (LA115_0==31) ) {
+                    alt115=1;
+                }
+
+
+                switch (alt115) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23151:2: rule__ProtocolLayer__Group_3_3__0
+            	    {
+            	    pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_3_3__0_in_rule__ProtocolLayer__Group_3__3__Impl45864);
+            	    rule__ProtocolLayer__Group_3_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop115;
+                }
+            } while (true);
+
+             after(grammarAccess.getProtocolLayerAccess().getGroup_3_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_3__3__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_3__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23161:1: rule__ProtocolLayer__Group_3__4 : rule__ProtocolLayer__Group_3__4__Impl ;
+    public final void rule__ProtocolLayer__Group_3__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23165:1: ( rule__ProtocolLayer__Group_3__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23166:2: rule__ProtocolLayer__Group_3__4__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_3__4__Impl_in_rule__ProtocolLayer__Group_3__445895);
+            rule__ProtocolLayer__Group_3__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_3__4"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_3__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23172:1: rule__ProtocolLayer__Group_3__4__Impl : ( '}' ) ;
+    public final void rule__ProtocolLayer__Group_3__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23176:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23177:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23177:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23178:1: '}'
+            {
+             before(grammarAccess.getProtocolLayerAccess().getRightCurlyBracketKeyword_3_4()); 
+            match(input,29,FollowSets002.FOLLOW_29_in_rule__ProtocolLayer__Group_3__4__Impl45923); 
+             after(grammarAccess.getProtocolLayerAccess().getRightCurlyBracketKeyword_3_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_3__4__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_3_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23201:1: rule__ProtocolLayer__Group_3_3__0 : rule__ProtocolLayer__Group_3_3__0__Impl rule__ProtocolLayer__Group_3_3__1 ;
+    public final void rule__ProtocolLayer__Group_3_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23205:1: ( rule__ProtocolLayer__Group_3_3__0__Impl rule__ProtocolLayer__Group_3_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23206:2: rule__ProtocolLayer__Group_3_3__0__Impl rule__ProtocolLayer__Group_3_3__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_3_3__0__Impl_in_rule__ProtocolLayer__Group_3_3__045964);
+            rule__ProtocolLayer__Group_3_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_3_3__1_in_rule__ProtocolLayer__Group_3_3__045967);
+            rule__ProtocolLayer__Group_3_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_3_3__0"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_3_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23213:1: rule__ProtocolLayer__Group_3_3__0__Impl : ( ',' ) ;
+    public final void rule__ProtocolLayer__Group_3_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23217:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23218:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23218:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23219:1: ','
+            {
+             before(grammarAccess.getProtocolLayerAccess().getCommaKeyword_3_3_0()); 
+            match(input,31,FollowSets002.FOLLOW_31_in_rule__ProtocolLayer__Group_3_3__0__Impl45995); 
+             after(grammarAccess.getProtocolLayerAccess().getCommaKeyword_3_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_3_3__0__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_3_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23232:1: rule__ProtocolLayer__Group_3_3__1 : rule__ProtocolLayer__Group_3_3__1__Impl ;
+    public final void rule__ProtocolLayer__Group_3_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23236:1: ( rule__ProtocolLayer__Group_3_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23237:2: rule__ProtocolLayer__Group_3_3__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_3_3__1__Impl_in_rule__ProtocolLayer__Group_3_3__146026);
+            rule__ProtocolLayer__Group_3_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_3_3__1"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_3_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23243:1: rule__ProtocolLayer__Group_3_3__1__Impl : ( ( rule__ProtocolLayer__AlternativeNamesAssignment_3_3_1 ) ) ;
+    public final void rule__ProtocolLayer__Group_3_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23247:1: ( ( ( rule__ProtocolLayer__AlternativeNamesAssignment_3_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23248:1: ( ( rule__ProtocolLayer__AlternativeNamesAssignment_3_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23248:1: ( ( rule__ProtocolLayer__AlternativeNamesAssignment_3_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23249:1: ( rule__ProtocolLayer__AlternativeNamesAssignment_3_3_1 )
+            {
+             before(grammarAccess.getProtocolLayerAccess().getAlternativeNamesAssignment_3_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23250:1: ( rule__ProtocolLayer__AlternativeNamesAssignment_3_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23250:2: rule__ProtocolLayer__AlternativeNamesAssignment_3_3_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__AlternativeNamesAssignment_3_3_1_in_rule__ProtocolLayer__Group_3_3__1__Impl46053);
+            rule__ProtocolLayer__AlternativeNamesAssignment_3_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProtocolLayerAccess().getAlternativeNamesAssignment_3_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_3_3__1__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_6__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23264:1: rule__ProtocolLayer__Group_6__0 : rule__ProtocolLayer__Group_6__0__Impl rule__ProtocolLayer__Group_6__1 ;
+    public final void rule__ProtocolLayer__Group_6__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23268:1: ( rule__ProtocolLayer__Group_6__0__Impl rule__ProtocolLayer__Group_6__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23269:2: rule__ProtocolLayer__Group_6__0__Impl rule__ProtocolLayer__Group_6__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_6__0__Impl_in_rule__ProtocolLayer__Group_6__046087);
+            rule__ProtocolLayer__Group_6__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_6__1_in_rule__ProtocolLayer__Group_6__046090);
+            rule__ProtocolLayer__Group_6__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_6__0"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_6__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23276:1: rule__ProtocolLayer__Group_6__0__Impl : ( 'isCarriedBy' ) ;
+    public final void rule__ProtocolLayer__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23280:1: ( ( 'isCarriedBy' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23281:1: ( 'isCarriedBy' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23281:1: ( 'isCarriedBy' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23282:1: 'isCarriedBy'
+            {
+             before(grammarAccess.getProtocolLayerAccess().getIsCarriedByKeyword_6_0()); 
+            match(input,141,FollowSets002.FOLLOW_141_in_rule__ProtocolLayer__Group_6__0__Impl46118); 
+             after(grammarAccess.getProtocolLayerAccess().getIsCarriedByKeyword_6_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_6__0__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_6__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23295:1: rule__ProtocolLayer__Group_6__1 : rule__ProtocolLayer__Group_6__1__Impl ;
+    public final void rule__ProtocolLayer__Group_6__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23299:1: ( rule__ProtocolLayer__Group_6__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23300:2: rule__ProtocolLayer__Group_6__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_6__1__Impl_in_rule__ProtocolLayer__Group_6__146149);
+            rule__ProtocolLayer__Group_6__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_6__1"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_6__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23306:1: rule__ProtocolLayer__Group_6__1__Impl : ( ( rule__ProtocolLayer__IsCarriedByAssignment_6_1 ) ) ;
+    public final void rule__ProtocolLayer__Group_6__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23310:1: ( ( ( rule__ProtocolLayer__IsCarriedByAssignment_6_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23311:1: ( ( rule__ProtocolLayer__IsCarriedByAssignment_6_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23311:1: ( ( rule__ProtocolLayer__IsCarriedByAssignment_6_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23312:1: ( rule__ProtocolLayer__IsCarriedByAssignment_6_1 )
+            {
+             before(grammarAccess.getProtocolLayerAccess().getIsCarriedByAssignment_6_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23313:1: ( rule__ProtocolLayer__IsCarriedByAssignment_6_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23313:2: rule__ProtocolLayer__IsCarriedByAssignment_6_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__IsCarriedByAssignment_6_1_in_rule__ProtocolLayer__Group_6__1__Impl46176);
+            rule__ProtocolLayer__IsCarriedByAssignment_6_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProtocolLayerAccess().getIsCarriedByAssignment_6_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_6__1__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_7__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23327:1: rule__ProtocolLayer__Group_7__0 : rule__ProtocolLayer__Group_7__0__Impl rule__ProtocolLayer__Group_7__1 ;
+    public final void rule__ProtocolLayer__Group_7__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23331:1: ( rule__ProtocolLayer__Group_7__0__Impl rule__ProtocolLayer__Group_7__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23332:2: rule__ProtocolLayer__Group_7__0__Impl rule__ProtocolLayer__Group_7__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_7__0__Impl_in_rule__ProtocolLayer__Group_7__046210);
+            rule__ProtocolLayer__Group_7__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_7__1_in_rule__ProtocolLayer__Group_7__046213);
+            rule__ProtocolLayer__Group_7__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_7__0"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_7__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23339:1: rule__ProtocolLayer__Group_7__0__Impl : ( 'carries' ) ;
+    public final void rule__ProtocolLayer__Group_7__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23343:1: ( ( 'carries' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23344:1: ( 'carries' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23344:1: ( 'carries' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23345:1: 'carries'
+            {
+             before(grammarAccess.getProtocolLayerAccess().getCarriesKeyword_7_0()); 
+            match(input,142,FollowSets002.FOLLOW_142_in_rule__ProtocolLayer__Group_7__0__Impl46241); 
+             after(grammarAccess.getProtocolLayerAccess().getCarriesKeyword_7_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_7__0__Impl"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_7__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23358:1: rule__ProtocolLayer__Group_7__1 : rule__ProtocolLayer__Group_7__1__Impl ;
+    public final void rule__ProtocolLayer__Group_7__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23362:1: ( rule__ProtocolLayer__Group_7__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23363:2: rule__ProtocolLayer__Group_7__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__Group_7__1__Impl_in_rule__ProtocolLayer__Group_7__146272);
+            rule__ProtocolLayer__Group_7__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_7__1"
+
+
+    // $ANTLR start "rule__ProtocolLayer__Group_7__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23369:1: rule__ProtocolLayer__Group_7__1__Impl : ( ( rule__ProtocolLayer__CarriesAssignment_7_1 ) ) ;
+    public final void rule__ProtocolLayer__Group_7__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23373:1: ( ( ( rule__ProtocolLayer__CarriesAssignment_7_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23374:1: ( ( rule__ProtocolLayer__CarriesAssignment_7_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23374:1: ( ( rule__ProtocolLayer__CarriesAssignment_7_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23375:1: ( rule__ProtocolLayer__CarriesAssignment_7_1 )
+            {
+             before(grammarAccess.getProtocolLayerAccess().getCarriesAssignment_7_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23376:1: ( rule__ProtocolLayer__CarriesAssignment_7_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23376:2: rule__ProtocolLayer__CarriesAssignment_7_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__ProtocolLayer__CarriesAssignment_7_1_in_rule__ProtocolLayer__Group_7__1__Impl46299);
+            rule__ProtocolLayer__CarriesAssignment_7_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getProtocolLayerAccess().getCarriesAssignment_7_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__Group_7__1__Impl"
+
+
+    // $ANTLR start "rule__Route__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23390:1: rule__Route__Group__0 : rule__Route__Group__0__Impl rule__Route__Group__1 ;
+    public final void rule__Route__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23394:1: ( rule__Route__Group__0__Impl rule__Route__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23395:2: rule__Route__Group__0__Impl rule__Route__Group__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__0__Impl_in_rule__Route__Group__046333);
+            rule__Route__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__1_in_rule__Route__Group__046336);
+            rule__Route__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__0"
+
+
+    // $ANTLR start "rule__Route__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23402:1: rule__Route__Group__0__Impl : ( 'Route' ) ;
+    public final void rule__Route__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23406:1: ( ( 'Route' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23407:1: ( 'Route' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23407:1: ( 'Route' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23408:1: 'Route'
+            {
+             before(grammarAccess.getRouteAccess().getRouteKeyword_0()); 
+            match(input,143,FollowSets002.FOLLOW_143_in_rule__Route__Group__0__Impl46364); 
+             after(grammarAccess.getRouteAccess().getRouteKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__0__Impl"
+
+
+    // $ANTLR start "rule__Route__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23421:1: rule__Route__Group__1 : rule__Route__Group__1__Impl rule__Route__Group__2 ;
+    public final void rule__Route__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23425:1: ( rule__Route__Group__1__Impl rule__Route__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23426:2: rule__Route__Group__1__Impl rule__Route__Group__2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__1__Impl_in_rule__Route__Group__146395);
+            rule__Route__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__2_in_rule__Route__Group__146398);
+            rule__Route__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__1"
+
+
+    // $ANTLR start "rule__Route__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23433:1: rule__Route__Group__1__Impl : ( ( rule__Route__IdAssignment_1 ) ) ;
+    public final void rule__Route__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23437:1: ( ( ( rule__Route__IdAssignment_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23438:1: ( ( rule__Route__IdAssignment_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23438:1: ( ( rule__Route__IdAssignment_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23439:1: ( rule__Route__IdAssignment_1 )
+            {
+             before(grammarAccess.getRouteAccess().getIdAssignment_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23440:1: ( rule__Route__IdAssignment_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23440:2: rule__Route__IdAssignment_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__IdAssignment_1_in_rule__Route__Group__1__Impl46425);
+            rule__Route__IdAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRouteAccess().getIdAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__1__Impl"
+
+
+    // $ANTLR start "rule__Route__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23450:1: rule__Route__Group__2 : rule__Route__Group__2__Impl rule__Route__Group__3 ;
+    public final void rule__Route__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23454:1: ( rule__Route__Group__2__Impl rule__Route__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23455:2: rule__Route__Group__2__Impl rule__Route__Group__3
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__2__Impl_in_rule__Route__Group__246455);
+            rule__Route__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__3_in_rule__Route__Group__246458);
+            rule__Route__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__2"
+
+
+    // $ANTLR start "rule__Route__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23462:1: rule__Route__Group__2__Impl : ( '{' ) ;
+    public final void rule__Route__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23466:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23467:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23467:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23468:1: '{'
+            {
+             before(grammarAccess.getRouteAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets002.FOLLOW_23_in_rule__Route__Group__2__Impl46486); 
+             after(grammarAccess.getRouteAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__2__Impl"
+
+
+    // $ANTLR start "rule__Route__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23481:1: rule__Route__Group__3 : rule__Route__Group__3__Impl rule__Route__Group__4 ;
+    public final void rule__Route__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23485:1: ( rule__Route__Group__3__Impl rule__Route__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23486:2: rule__Route__Group__3__Impl rule__Route__Group__4
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__3__Impl_in_rule__Route__Group__346517);
+            rule__Route__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__4_in_rule__Route__Group__346520);
+            rule__Route__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__3"
+
+
+    // $ANTLR start "rule__Route__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23493:1: rule__Route__Group__3__Impl : ( 'name' ) ;
+    public final void rule__Route__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23497:1: ( ( 'name' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23498:1: ( 'name' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23498:1: ( 'name' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23499:1: 'name'
+            {
+             before(grammarAccess.getRouteAccess().getNameKeyword_3()); 
+            match(input,65,FollowSets002.FOLLOW_65_in_rule__Route__Group__3__Impl46548); 
+             after(grammarAccess.getRouteAccess().getNameKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__3__Impl"
+
+
+    // $ANTLR start "rule__Route__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23512:1: rule__Route__Group__4 : rule__Route__Group__4__Impl rule__Route__Group__5 ;
+    public final void rule__Route__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23516:1: ( rule__Route__Group__4__Impl rule__Route__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23517:2: rule__Route__Group__4__Impl rule__Route__Group__5
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__4__Impl_in_rule__Route__Group__446579);
+            rule__Route__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__5_in_rule__Route__Group__446582);
+            rule__Route__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__4"
+
+
+    // $ANTLR start "rule__Route__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23524:1: rule__Route__Group__4__Impl : ( ( rule__Route__NameAssignment_4 ) ) ;
+    public final void rule__Route__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23528:1: ( ( ( rule__Route__NameAssignment_4 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23529:1: ( ( rule__Route__NameAssignment_4 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23529:1: ( ( rule__Route__NameAssignment_4 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23530:1: ( rule__Route__NameAssignment_4 )
+            {
+             before(grammarAccess.getRouteAccess().getNameAssignment_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23531:1: ( rule__Route__NameAssignment_4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23531:2: rule__Route__NameAssignment_4
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__NameAssignment_4_in_rule__Route__Group__4__Impl46609);
+            rule__Route__NameAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRouteAccess().getNameAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__4__Impl"
+
+
+    // $ANTLR start "rule__Route__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23541:1: rule__Route__Group__5 : rule__Route__Group__5__Impl rule__Route__Group__6 ;
+    public final void rule__Route__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23545:1: ( rule__Route__Group__5__Impl rule__Route__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23546:2: rule__Route__Group__5__Impl rule__Route__Group__6
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__5__Impl_in_rule__Route__Group__546639);
+            rule__Route__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__6_in_rule__Route__Group__546642);
+            rule__Route__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__5"
+
+
+    // $ANTLR start "rule__Route__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23553:1: rule__Route__Group__5__Impl : ( ( rule__Route__Group_5__0 )? ) ;
+    public final void rule__Route__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23557:1: ( ( ( rule__Route__Group_5__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23558:1: ( ( rule__Route__Group_5__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23558:1: ( ( rule__Route__Group_5__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23559:1: ( rule__Route__Group_5__0 )?
+            {
+             before(grammarAccess.getRouteAccess().getGroup_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23560:1: ( rule__Route__Group_5__0 )?
+            int alt116=2;
+            int LA116_0 = input.LA(1);
+
+            if ( (LA116_0==67) ) {
+                alt116=1;
+            }
+            switch (alt116) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23560:2: rule__Route__Group_5__0
+                    {
+                    pushFollow(FollowSets002.FOLLOW_rule__Route__Group_5__0_in_rule__Route__Group__5__Impl46669);
+                    rule__Route__Group_5__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getRouteAccess().getGroup_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__5__Impl"
+
+
+    // $ANTLR start "rule__Route__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23570:1: rule__Route__Group__6 : rule__Route__Group__6__Impl rule__Route__Group__7 ;
+    public final void rule__Route__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23574:1: ( rule__Route__Group__6__Impl rule__Route__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23575:2: rule__Route__Group__6__Impl rule__Route__Group__7
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__6__Impl_in_rule__Route__Group__646700);
+            rule__Route__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__7_in_rule__Route__Group__646703);
+            rule__Route__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__6"
+
+
+    // $ANTLR start "rule__Route__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23582:1: rule__Route__Group__6__Impl : ( ( rule__Route__Group_6__0 )? ) ;
+    public final void rule__Route__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23586:1: ( ( ( rule__Route__Group_6__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23587:1: ( ( rule__Route__Group_6__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23587:1: ( ( rule__Route__Group_6__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23588:1: ( rule__Route__Group_6__0 )?
+            {
+             before(grammarAccess.getRouteAccess().getGroup_6()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23589:1: ( rule__Route__Group_6__0 )?
+            int alt117=2;
+            int LA117_0 = input.LA(1);
+
+            if ( (LA117_0==146) ) {
+                alt117=1;
+            }
+            switch (alt117) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23589:2: rule__Route__Group_6__0
+                    {
+                    pushFollow(FollowSets002.FOLLOW_rule__Route__Group_6__0_in_rule__Route__Group__6__Impl46730);
+                    rule__Route__Group_6__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getRouteAccess().getGroup_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__6__Impl"
+
+
+    // $ANTLR start "rule__Route__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23599:1: rule__Route__Group__7 : rule__Route__Group__7__Impl rule__Route__Group__8 ;
+    public final void rule__Route__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23603:1: ( rule__Route__Group__7__Impl rule__Route__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23604:2: rule__Route__Group__7__Impl rule__Route__Group__8
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__7__Impl_in_rule__Route__Group__746761);
+            rule__Route__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__8_in_rule__Route__Group__746764);
+            rule__Route__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__7"
+
+
+    // $ANTLR start "rule__Route__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23611:1: rule__Route__Group__7__Impl : ( 'start' ) ;
+    public final void rule__Route__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23615:1: ( ( 'start' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23616:1: ( 'start' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23616:1: ( 'start' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23617:1: 'start'
+            {
+             before(grammarAccess.getRouteAccess().getStartKeyword_7()); 
+            match(input,144,FollowSets002.FOLLOW_144_in_rule__Route__Group__7__Impl46792); 
+             after(grammarAccess.getRouteAccess().getStartKeyword_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__7__Impl"
+
+
+    // $ANTLR start "rule__Route__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23630:1: rule__Route__Group__8 : rule__Route__Group__8__Impl rule__Route__Group__9 ;
+    public final void rule__Route__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23634:1: ( rule__Route__Group__8__Impl rule__Route__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23635:2: rule__Route__Group__8__Impl rule__Route__Group__9
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__8__Impl_in_rule__Route__Group__846823);
+            rule__Route__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__9_in_rule__Route__Group__846826);
+            rule__Route__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__8"
+
+
+    // $ANTLR start "rule__Route__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23642:1: rule__Route__Group__8__Impl : ( ( rule__Route__StartAssignment_8 ) ) ;
+    public final void rule__Route__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23646:1: ( ( ( rule__Route__StartAssignment_8 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23647:1: ( ( rule__Route__StartAssignment_8 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23647:1: ( ( rule__Route__StartAssignment_8 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23648:1: ( rule__Route__StartAssignment_8 )
+            {
+             before(grammarAccess.getRouteAccess().getStartAssignment_8()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23649:1: ( rule__Route__StartAssignment_8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23649:2: rule__Route__StartAssignment_8
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__StartAssignment_8_in_rule__Route__Group__8__Impl46853);
+            rule__Route__StartAssignment_8();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRouteAccess().getStartAssignment_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__8__Impl"
+
+
+    // $ANTLR start "rule__Route__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23659:1: rule__Route__Group__9 : rule__Route__Group__9__Impl rule__Route__Group__10 ;
+    public final void rule__Route__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23663:1: ( rule__Route__Group__9__Impl rule__Route__Group__10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23664:2: rule__Route__Group__9__Impl rule__Route__Group__10
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__9__Impl_in_rule__Route__Group__946883);
+            rule__Route__Group__9__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__10_in_rule__Route__Group__946886);
+            rule__Route__Group__10();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__9"
+
+
+    // $ANTLR start "rule__Route__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23671:1: rule__Route__Group__9__Impl : ( 'end' ) ;
+    public final void rule__Route__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23675:1: ( ( 'end' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23676:1: ( 'end' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23676:1: ( 'end' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23677:1: 'end'
+            {
+             before(grammarAccess.getRouteAccess().getEndKeyword_9()); 
+            match(input,145,FollowSets002.FOLLOW_145_in_rule__Route__Group__9__Impl46914); 
+             after(grammarAccess.getRouteAccess().getEndKeyword_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__9__Impl"
+
+
+    // $ANTLR start "rule__Route__Group__10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23690:1: rule__Route__Group__10 : rule__Route__Group__10__Impl rule__Route__Group__11 ;
+    public final void rule__Route__Group__10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23694:1: ( rule__Route__Group__10__Impl rule__Route__Group__11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23695:2: rule__Route__Group__10__Impl rule__Route__Group__11
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__10__Impl_in_rule__Route__Group__1046945);
+            rule__Route__Group__10__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__11_in_rule__Route__Group__1046948);
+            rule__Route__Group__11();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__10"
+
+
+    // $ANTLR start "rule__Route__Group__10__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23702:1: rule__Route__Group__10__Impl : ( ( rule__Route__EndAssignment_10 ) ) ;
+    public final void rule__Route__Group__10__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23706:1: ( ( ( rule__Route__EndAssignment_10 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23707:1: ( ( rule__Route__EndAssignment_10 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23707:1: ( ( rule__Route__EndAssignment_10 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23708:1: ( rule__Route__EndAssignment_10 )
+            {
+             before(grammarAccess.getRouteAccess().getEndAssignment_10()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23709:1: ( rule__Route__EndAssignment_10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23709:2: rule__Route__EndAssignment_10
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__EndAssignment_10_in_rule__Route__Group__10__Impl46975);
+            rule__Route__EndAssignment_10();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRouteAccess().getEndAssignment_10()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__10__Impl"
+
+
+    // $ANTLR start "rule__Route__Group__11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23719:1: rule__Route__Group__11 : rule__Route__Group__11__Impl rule__Route__Group__12 ;
+    public final void rule__Route__Group__11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23723:1: ( rule__Route__Group__11__Impl rule__Route__Group__12 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23724:2: rule__Route__Group__11__Impl rule__Route__Group__12
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__11__Impl_in_rule__Route__Group__1147005);
+            rule__Route__Group__11__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__12_in_rule__Route__Group__1147008);
+            rule__Route__Group__12();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__11"
+
+
+    // $ANTLR start "rule__Route__Group__11__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23731:1: rule__Route__Group__11__Impl : ( ( rule__Route__Group_11__0 )? ) ;
+    public final void rule__Route__Group__11__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23735:1: ( ( ( rule__Route__Group_11__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23736:1: ( ( rule__Route__Group_11__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23736:1: ( ( rule__Route__Group_11__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23737:1: ( rule__Route__Group_11__0 )?
+            {
+             before(grammarAccess.getRouteAccess().getGroup_11()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23738:1: ( rule__Route__Group_11__0 )?
+            int alt118=2;
+            int LA118_0 = input.LA(1);
+
+            if ( (LA118_0==147) ) {
+                alt118=1;
+            }
+            switch (alt118) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23738:2: rule__Route__Group_11__0
+                    {
+                    pushFollow(FollowSets002.FOLLOW_rule__Route__Group_11__0_in_rule__Route__Group__11__Impl47035);
+                    rule__Route__Group_11__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getRouteAccess().getGroup_11()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__11__Impl"
+
+
+    // $ANTLR start "rule__Route__Group__12"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23748:1: rule__Route__Group__12 : rule__Route__Group__12__Impl ;
+    public final void rule__Route__Group__12() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23752:1: ( rule__Route__Group__12__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23753:2: rule__Route__Group__12__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group__12__Impl_in_rule__Route__Group__1247066);
+            rule__Route__Group__12__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__12"
+
+
+    // $ANTLR start "rule__Route__Group__12__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23759:1: rule__Route__Group__12__Impl : ( '}' ) ;
+    public final void rule__Route__Group__12__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23763:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23764:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23764:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23765:1: '}'
+            {
+             before(grammarAccess.getRouteAccess().getRightCurlyBracketKeyword_12()); 
+            match(input,29,FollowSets002.FOLLOW_29_in_rule__Route__Group__12__Impl47094); 
+             after(grammarAccess.getRouteAccess().getRightCurlyBracketKeyword_12()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group__12__Impl"
+
+
+    // $ANTLR start "rule__Route__Group_5__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23804:1: rule__Route__Group_5__0 : rule__Route__Group_5__0__Impl rule__Route__Group_5__1 ;
+    public final void rule__Route__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23808:1: ( rule__Route__Group_5__0__Impl rule__Route__Group_5__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23809:2: rule__Route__Group_5__0__Impl rule__Route__Group_5__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group_5__0__Impl_in_rule__Route__Group_5__047151);
+            rule__Route__Group_5__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group_5__1_in_rule__Route__Group_5__047154);
+            rule__Route__Group_5__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_5__0"
+
+
+    // $ANTLR start "rule__Route__Group_5__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23816:1: rule__Route__Group_5__0__Impl : ( 'alternativeNames' ) ;
+    public final void rule__Route__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23820:1: ( ( 'alternativeNames' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23821:1: ( 'alternativeNames' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23821:1: ( 'alternativeNames' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23822:1: 'alternativeNames'
+            {
+             before(grammarAccess.getRouteAccess().getAlternativeNamesKeyword_5_0()); 
+            match(input,67,FollowSets002.FOLLOW_67_in_rule__Route__Group_5__0__Impl47182); 
+             after(grammarAccess.getRouteAccess().getAlternativeNamesKeyword_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__Route__Group_5__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23835:1: rule__Route__Group_5__1 : rule__Route__Group_5__1__Impl rule__Route__Group_5__2 ;
+    public final void rule__Route__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23839:1: ( rule__Route__Group_5__1__Impl rule__Route__Group_5__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23840:2: rule__Route__Group_5__1__Impl rule__Route__Group_5__2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group_5__1__Impl_in_rule__Route__Group_5__147213);
+            rule__Route__Group_5__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group_5__2_in_rule__Route__Group_5__147216);
+            rule__Route__Group_5__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_5__1"
+
+
+    // $ANTLR start "rule__Route__Group_5__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23847:1: rule__Route__Group_5__1__Impl : ( '{' ) ;
+    public final void rule__Route__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23851:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23852:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23852:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23853:1: '{'
+            {
+             before(grammarAccess.getRouteAccess().getLeftCurlyBracketKeyword_5_1()); 
+            match(input,23,FollowSets002.FOLLOW_23_in_rule__Route__Group_5__1__Impl47244); 
+             after(grammarAccess.getRouteAccess().getLeftCurlyBracketKeyword_5_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__Route__Group_5__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23866:1: rule__Route__Group_5__2 : rule__Route__Group_5__2__Impl rule__Route__Group_5__3 ;
+    public final void rule__Route__Group_5__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23870:1: ( rule__Route__Group_5__2__Impl rule__Route__Group_5__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23871:2: rule__Route__Group_5__2__Impl rule__Route__Group_5__3
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group_5__2__Impl_in_rule__Route__Group_5__247275);
+            rule__Route__Group_5__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group_5__3_in_rule__Route__Group_5__247278);
+            rule__Route__Group_5__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_5__2"
+
+
+    // $ANTLR start "rule__Route__Group_5__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23878:1: rule__Route__Group_5__2__Impl : ( ( rule__Route__AlternativeNamesAssignment_5_2 ) ) ;
+    public final void rule__Route__Group_5__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23882:1: ( ( ( rule__Route__AlternativeNamesAssignment_5_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23883:1: ( ( rule__Route__AlternativeNamesAssignment_5_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23883:1: ( ( rule__Route__AlternativeNamesAssignment_5_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23884:1: ( rule__Route__AlternativeNamesAssignment_5_2 )
+            {
+             before(grammarAccess.getRouteAccess().getAlternativeNamesAssignment_5_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23885:1: ( rule__Route__AlternativeNamesAssignment_5_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23885:2: rule__Route__AlternativeNamesAssignment_5_2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__AlternativeNamesAssignment_5_2_in_rule__Route__Group_5__2__Impl47305);
+            rule__Route__AlternativeNamesAssignment_5_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRouteAccess().getAlternativeNamesAssignment_5_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_5__2__Impl"
+
+
+    // $ANTLR start "rule__Route__Group_5__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23895:1: rule__Route__Group_5__3 : rule__Route__Group_5__3__Impl rule__Route__Group_5__4 ;
+    public final void rule__Route__Group_5__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23899:1: ( rule__Route__Group_5__3__Impl rule__Route__Group_5__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23900:2: rule__Route__Group_5__3__Impl rule__Route__Group_5__4
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group_5__3__Impl_in_rule__Route__Group_5__347335);
+            rule__Route__Group_5__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group_5__4_in_rule__Route__Group_5__347338);
+            rule__Route__Group_5__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_5__3"
+
+
+    // $ANTLR start "rule__Route__Group_5__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23907:1: rule__Route__Group_5__3__Impl : ( ( rule__Route__Group_5_3__0 )* ) ;
+    public final void rule__Route__Group_5__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23911:1: ( ( ( rule__Route__Group_5_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23912:1: ( ( rule__Route__Group_5_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23912:1: ( ( rule__Route__Group_5_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23913:1: ( rule__Route__Group_5_3__0 )*
+            {
+             before(grammarAccess.getRouteAccess().getGroup_5_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23914:1: ( rule__Route__Group_5_3__0 )*
+            loop119:
+            do {
+                int alt119=2;
+                int LA119_0 = input.LA(1);
+
+                if ( (LA119_0==31) ) {
+                    alt119=1;
+                }
+
+
+                switch (alt119) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23914:2: rule__Route__Group_5_3__0
+            	    {
+            	    pushFollow(FollowSets002.FOLLOW_rule__Route__Group_5_3__0_in_rule__Route__Group_5__3__Impl47365);
+            	    rule__Route__Group_5_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop119;
+                }
+            } while (true);
+
+             after(grammarAccess.getRouteAccess().getGroup_5_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_5__3__Impl"
+
+
+    // $ANTLR start "rule__Route__Group_5__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23924:1: rule__Route__Group_5__4 : rule__Route__Group_5__4__Impl ;
+    public final void rule__Route__Group_5__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23928:1: ( rule__Route__Group_5__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23929:2: rule__Route__Group_5__4__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group_5__4__Impl_in_rule__Route__Group_5__447396);
+            rule__Route__Group_5__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_5__4"
+
+
+    // $ANTLR start "rule__Route__Group_5__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23935:1: rule__Route__Group_5__4__Impl : ( '}' ) ;
+    public final void rule__Route__Group_5__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23939:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23940:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23940:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23941:1: '}'
+            {
+             before(grammarAccess.getRouteAccess().getRightCurlyBracketKeyword_5_4()); 
+            match(input,29,FollowSets002.FOLLOW_29_in_rule__Route__Group_5__4__Impl47424); 
+             after(grammarAccess.getRouteAccess().getRightCurlyBracketKeyword_5_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_5__4__Impl"
+
+
+    // $ANTLR start "rule__Route__Group_5_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23964:1: rule__Route__Group_5_3__0 : rule__Route__Group_5_3__0__Impl rule__Route__Group_5_3__1 ;
+    public final void rule__Route__Group_5_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23968:1: ( rule__Route__Group_5_3__0__Impl rule__Route__Group_5_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23969:2: rule__Route__Group_5_3__0__Impl rule__Route__Group_5_3__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group_5_3__0__Impl_in_rule__Route__Group_5_3__047465);
+            rule__Route__Group_5_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group_5_3__1_in_rule__Route__Group_5_3__047468);
+            rule__Route__Group_5_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_5_3__0"
+
+
+    // $ANTLR start "rule__Route__Group_5_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23976:1: rule__Route__Group_5_3__0__Impl : ( ',' ) ;
+    public final void rule__Route__Group_5_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23980:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23981:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23981:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23982:1: ','
+            {
+             before(grammarAccess.getRouteAccess().getCommaKeyword_5_3_0()); 
+            match(input,31,FollowSets002.FOLLOW_31_in_rule__Route__Group_5_3__0__Impl47496); 
+             after(grammarAccess.getRouteAccess().getCommaKeyword_5_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_5_3__0__Impl"
+
+
+    // $ANTLR start "rule__Route__Group_5_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23995:1: rule__Route__Group_5_3__1 : rule__Route__Group_5_3__1__Impl ;
+    public final void rule__Route__Group_5_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:23999:1: ( rule__Route__Group_5_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24000:2: rule__Route__Group_5_3__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group_5_3__1__Impl_in_rule__Route__Group_5_3__147527);
+            rule__Route__Group_5_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_5_3__1"
+
+
+    // $ANTLR start "rule__Route__Group_5_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24006:1: rule__Route__Group_5_3__1__Impl : ( ( rule__Route__AlternativeNamesAssignment_5_3_1 ) ) ;
+    public final void rule__Route__Group_5_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24010:1: ( ( ( rule__Route__AlternativeNamesAssignment_5_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24011:1: ( ( rule__Route__AlternativeNamesAssignment_5_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24011:1: ( ( rule__Route__AlternativeNamesAssignment_5_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24012:1: ( rule__Route__AlternativeNamesAssignment_5_3_1 )
+            {
+             before(grammarAccess.getRouteAccess().getAlternativeNamesAssignment_5_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24013:1: ( rule__Route__AlternativeNamesAssignment_5_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24013:2: rule__Route__AlternativeNamesAssignment_5_3_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__AlternativeNamesAssignment_5_3_1_in_rule__Route__Group_5_3__1__Impl47554);
+            rule__Route__AlternativeNamesAssignment_5_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRouteAccess().getAlternativeNamesAssignment_5_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_5_3__1__Impl"
+
+
+    // $ANTLR start "rule__Route__Group_6__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24027:1: rule__Route__Group_6__0 : rule__Route__Group_6__0__Impl rule__Route__Group_6__1 ;
+    public final void rule__Route__Group_6__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24031:1: ( rule__Route__Group_6__0__Impl rule__Route__Group_6__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24032:2: rule__Route__Group_6__0__Impl rule__Route__Group_6__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group_6__0__Impl_in_rule__Route__Group_6__047588);
+            rule__Route__Group_6__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group_6__1_in_rule__Route__Group_6__047591);
+            rule__Route__Group_6__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_6__0"
+
+
+    // $ANTLR start "rule__Route__Group_6__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24039:1: rule__Route__Group_6__0__Impl : ( 'numHops' ) ;
+    public final void rule__Route__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24043:1: ( ( 'numHops' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24044:1: ( 'numHops' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24044:1: ( 'numHops' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24045:1: 'numHops'
+            {
+             before(grammarAccess.getRouteAccess().getNumHopsKeyword_6_0()); 
+            match(input,146,FollowSets002.FOLLOW_146_in_rule__Route__Group_6__0__Impl47619); 
+             after(grammarAccess.getRouteAccess().getNumHopsKeyword_6_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_6__0__Impl"
+
+
+    // $ANTLR start "rule__Route__Group_6__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24058:1: rule__Route__Group_6__1 : rule__Route__Group_6__1__Impl ;
+    public final void rule__Route__Group_6__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24062:1: ( rule__Route__Group_6__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24063:2: rule__Route__Group_6__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group_6__1__Impl_in_rule__Route__Group_6__147650);
+            rule__Route__Group_6__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_6__1"
+
+
+    // $ANTLR start "rule__Route__Group_6__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24069:1: rule__Route__Group_6__1__Impl : ( ( rule__Route__NumHopsAssignment_6_1 ) ) ;
+    public final void rule__Route__Group_6__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24073:1: ( ( ( rule__Route__NumHopsAssignment_6_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24074:1: ( ( rule__Route__NumHopsAssignment_6_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24074:1: ( ( rule__Route__NumHopsAssignment_6_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24075:1: ( rule__Route__NumHopsAssignment_6_1 )
+            {
+             before(grammarAccess.getRouteAccess().getNumHopsAssignment_6_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24076:1: ( rule__Route__NumHopsAssignment_6_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24076:2: rule__Route__NumHopsAssignment_6_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__NumHopsAssignment_6_1_in_rule__Route__Group_6__1__Impl47677);
+            rule__Route__NumHopsAssignment_6_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRouteAccess().getNumHopsAssignment_6_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_6__1__Impl"
+
+
+    // $ANTLR start "rule__Route__Group_11__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24090:1: rule__Route__Group_11__0 : rule__Route__Group_11__0__Impl rule__Route__Group_11__1 ;
+    public final void rule__Route__Group_11__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24094:1: ( rule__Route__Group_11__0__Impl rule__Route__Group_11__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24095:2: rule__Route__Group_11__0__Impl rule__Route__Group_11__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group_11__0__Impl_in_rule__Route__Group_11__047711);
+            rule__Route__Group_11__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group_11__1_in_rule__Route__Group_11__047714);
+            rule__Route__Group_11__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_11__0"
+
+
+    // $ANTLR start "rule__Route__Group_11__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24102:1: rule__Route__Group_11__0__Impl : ( 'hops' ) ;
+    public final void rule__Route__Group_11__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24106:1: ( ( 'hops' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24107:1: ( 'hops' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24107:1: ( 'hops' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24108:1: 'hops'
+            {
+             before(grammarAccess.getRouteAccess().getHopsKeyword_11_0()); 
+            match(input,147,FollowSets002.FOLLOW_147_in_rule__Route__Group_11__0__Impl47742); 
+             after(grammarAccess.getRouteAccess().getHopsKeyword_11_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_11__0__Impl"
+
+
+    // $ANTLR start "rule__Route__Group_11__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24121:1: rule__Route__Group_11__1 : rule__Route__Group_11__1__Impl ;
+    public final void rule__Route__Group_11__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24125:1: ( rule__Route__Group_11__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24126:2: rule__Route__Group_11__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__Group_11__1__Impl_in_rule__Route__Group_11__147773);
+            rule__Route__Group_11__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_11__1"
+
+
+    // $ANTLR start "rule__Route__Group_11__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24132:1: rule__Route__Group_11__1__Impl : ( ( rule__Route__HopsAssignment_11_1 ) ) ;
+    public final void rule__Route__Group_11__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24136:1: ( ( ( rule__Route__HopsAssignment_11_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24137:1: ( ( rule__Route__HopsAssignment_11_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24137:1: ( ( rule__Route__HopsAssignment_11_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24138:1: ( rule__Route__HopsAssignment_11_1 )
+            {
+             before(grammarAccess.getRouteAccess().getHopsAssignment_11_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24139:1: ( rule__Route__HopsAssignment_11_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24139:2: rule__Route__HopsAssignment_11_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Route__HopsAssignment_11_1_in_rule__Route__Group_11__1__Impl47800);
+            rule__Route__HopsAssignment_11_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getRouteAccess().getHopsAssignment_11_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__Group_11__1__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24153:1: rule__FlowRoute__Group__0 : rule__FlowRoute__Group__0__Impl rule__FlowRoute__Group__1 ;
+    public final void rule__FlowRoute__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24157:1: ( rule__FlowRoute__Group__0__Impl rule__FlowRoute__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24158:2: rule__FlowRoute__Group__0__Impl rule__FlowRoute__Group__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__0__Impl_in_rule__FlowRoute__Group__047834);
+            rule__FlowRoute__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__1_in_rule__FlowRoute__Group__047837);
+            rule__FlowRoute__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__0"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24165:1: rule__FlowRoute__Group__0__Impl : ( 'FlowRoute' ) ;
+    public final void rule__FlowRoute__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24169:1: ( ( 'FlowRoute' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24170:1: ( 'FlowRoute' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24170:1: ( 'FlowRoute' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24171:1: 'FlowRoute'
+            {
+             before(grammarAccess.getFlowRouteAccess().getFlowRouteKeyword_0()); 
+            match(input,148,FollowSets002.FOLLOW_148_in_rule__FlowRoute__Group__0__Impl47865); 
+             after(grammarAccess.getFlowRouteAccess().getFlowRouteKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__0__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24184:1: rule__FlowRoute__Group__1 : rule__FlowRoute__Group__1__Impl rule__FlowRoute__Group__2 ;
+    public final void rule__FlowRoute__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24188:1: ( rule__FlowRoute__Group__1__Impl rule__FlowRoute__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24189:2: rule__FlowRoute__Group__1__Impl rule__FlowRoute__Group__2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__1__Impl_in_rule__FlowRoute__Group__147896);
+            rule__FlowRoute__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__2_in_rule__FlowRoute__Group__147899);
+            rule__FlowRoute__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__1"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24196:1: rule__FlowRoute__Group__1__Impl : ( ( rule__FlowRoute__IdAssignment_1 ) ) ;
+    public final void rule__FlowRoute__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24200:1: ( ( ( rule__FlowRoute__IdAssignment_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24201:1: ( ( rule__FlowRoute__IdAssignment_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24201:1: ( ( rule__FlowRoute__IdAssignment_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24202:1: ( rule__FlowRoute__IdAssignment_1 )
+            {
+             before(grammarAccess.getFlowRouteAccess().getIdAssignment_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24203:1: ( rule__FlowRoute__IdAssignment_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24203:2: rule__FlowRoute__IdAssignment_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__IdAssignment_1_in_rule__FlowRoute__Group__1__Impl47926);
+            rule__FlowRoute__IdAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFlowRouteAccess().getIdAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__1__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24213:1: rule__FlowRoute__Group__2 : rule__FlowRoute__Group__2__Impl rule__FlowRoute__Group__3 ;
+    public final void rule__FlowRoute__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24217:1: ( rule__FlowRoute__Group__2__Impl rule__FlowRoute__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24218:2: rule__FlowRoute__Group__2__Impl rule__FlowRoute__Group__3
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__2__Impl_in_rule__FlowRoute__Group__247956);
+            rule__FlowRoute__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__3_in_rule__FlowRoute__Group__247959);
+            rule__FlowRoute__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__2"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24225:1: rule__FlowRoute__Group__2__Impl : ( '{' ) ;
+    public final void rule__FlowRoute__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24229:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24230:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24230:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24231:1: '{'
+            {
+             before(grammarAccess.getFlowRouteAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets002.FOLLOW_23_in_rule__FlowRoute__Group__2__Impl47987); 
+             after(grammarAccess.getFlowRouteAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__2__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24244:1: rule__FlowRoute__Group__3 : rule__FlowRoute__Group__3__Impl rule__FlowRoute__Group__4 ;
+    public final void rule__FlowRoute__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24248:1: ( rule__FlowRoute__Group__3__Impl rule__FlowRoute__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24249:2: rule__FlowRoute__Group__3__Impl rule__FlowRoute__Group__4
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__3__Impl_in_rule__FlowRoute__Group__348018);
+            rule__FlowRoute__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__4_in_rule__FlowRoute__Group__348021);
+            rule__FlowRoute__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__3"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24256:1: rule__FlowRoute__Group__3__Impl : ( 'name' ) ;
+    public final void rule__FlowRoute__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24260:1: ( ( 'name' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24261:1: ( 'name' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24261:1: ( 'name' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24262:1: 'name'
+            {
+             before(grammarAccess.getFlowRouteAccess().getNameKeyword_3()); 
+            match(input,65,FollowSets002.FOLLOW_65_in_rule__FlowRoute__Group__3__Impl48049); 
+             after(grammarAccess.getFlowRouteAccess().getNameKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__3__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24275:1: rule__FlowRoute__Group__4 : rule__FlowRoute__Group__4__Impl rule__FlowRoute__Group__5 ;
+    public final void rule__FlowRoute__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24279:1: ( rule__FlowRoute__Group__4__Impl rule__FlowRoute__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24280:2: rule__FlowRoute__Group__4__Impl rule__FlowRoute__Group__5
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__4__Impl_in_rule__FlowRoute__Group__448080);
+            rule__FlowRoute__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__5_in_rule__FlowRoute__Group__448083);
+            rule__FlowRoute__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__4"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24287:1: rule__FlowRoute__Group__4__Impl : ( ( rule__FlowRoute__NameAssignment_4 ) ) ;
+    public final void rule__FlowRoute__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24291:1: ( ( ( rule__FlowRoute__NameAssignment_4 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24292:1: ( ( rule__FlowRoute__NameAssignment_4 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24292:1: ( ( rule__FlowRoute__NameAssignment_4 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24293:1: ( rule__FlowRoute__NameAssignment_4 )
+            {
+             before(grammarAccess.getFlowRouteAccess().getNameAssignment_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24294:1: ( rule__FlowRoute__NameAssignment_4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24294:2: rule__FlowRoute__NameAssignment_4
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__NameAssignment_4_in_rule__FlowRoute__Group__4__Impl48110);
+            rule__FlowRoute__NameAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFlowRouteAccess().getNameAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__4__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24304:1: rule__FlowRoute__Group__5 : rule__FlowRoute__Group__5__Impl rule__FlowRoute__Group__6 ;
+    public final void rule__FlowRoute__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24308:1: ( rule__FlowRoute__Group__5__Impl rule__FlowRoute__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24309:2: rule__FlowRoute__Group__5__Impl rule__FlowRoute__Group__6
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__5__Impl_in_rule__FlowRoute__Group__548140);
+            rule__FlowRoute__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__6_in_rule__FlowRoute__Group__548143);
+            rule__FlowRoute__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__5"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24316:1: rule__FlowRoute__Group__5__Impl : ( ( rule__FlowRoute__Group_5__0 )? ) ;
+    public final void rule__FlowRoute__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24320:1: ( ( ( rule__FlowRoute__Group_5__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24321:1: ( ( rule__FlowRoute__Group_5__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24321:1: ( ( rule__FlowRoute__Group_5__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24322:1: ( rule__FlowRoute__Group_5__0 )?
+            {
+             before(grammarAccess.getFlowRouteAccess().getGroup_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24323:1: ( rule__FlowRoute__Group_5__0 )?
+            int alt120=2;
+            int LA120_0 = input.LA(1);
+
+            if ( (LA120_0==67) ) {
+                alt120=1;
+            }
+            switch (alt120) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24323:2: rule__FlowRoute__Group_5__0
+                    {
+                    pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_5__0_in_rule__FlowRoute__Group__5__Impl48170);
+                    rule__FlowRoute__Group_5__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getFlowRouteAccess().getGroup_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__5__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24333:1: rule__FlowRoute__Group__6 : rule__FlowRoute__Group__6__Impl rule__FlowRoute__Group__7 ;
+    public final void rule__FlowRoute__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24337:1: ( rule__FlowRoute__Group__6__Impl rule__FlowRoute__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24338:2: rule__FlowRoute__Group__6__Impl rule__FlowRoute__Group__7
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__6__Impl_in_rule__FlowRoute__Group__648201);
+            rule__FlowRoute__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__7_in_rule__FlowRoute__Group__648204);
+            rule__FlowRoute__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__6"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24345:1: rule__FlowRoute__Group__6__Impl : ( ( rule__FlowRoute__Group_6__0 )? ) ;
+    public final void rule__FlowRoute__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24349:1: ( ( ( rule__FlowRoute__Group_6__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24350:1: ( ( rule__FlowRoute__Group_6__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24350:1: ( ( rule__FlowRoute__Group_6__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24351:1: ( rule__FlowRoute__Group_6__0 )?
+            {
+             before(grammarAccess.getFlowRouteAccess().getGroup_6()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24352:1: ( rule__FlowRoute__Group_6__0 )?
+            int alt121=2;
+            int LA121_0 = input.LA(1);
+
+            if ( (LA121_0==146) ) {
+                alt121=1;
+            }
+            switch (alt121) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24352:2: rule__FlowRoute__Group_6__0
+                    {
+                    pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_6__0_in_rule__FlowRoute__Group__6__Impl48231);
+                    rule__FlowRoute__Group_6__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getFlowRouteAccess().getGroup_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__6__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24362:1: rule__FlowRoute__Group__7 : rule__FlowRoute__Group__7__Impl rule__FlowRoute__Group__8 ;
+    public final void rule__FlowRoute__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24366:1: ( rule__FlowRoute__Group__7__Impl rule__FlowRoute__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24367:2: rule__FlowRoute__Group__7__Impl rule__FlowRoute__Group__8
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__7__Impl_in_rule__FlowRoute__Group__748262);
+            rule__FlowRoute__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__8_in_rule__FlowRoute__Group__748265);
+            rule__FlowRoute__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__7"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24374:1: rule__FlowRoute__Group__7__Impl : ( 'flow' ) ;
+    public final void rule__FlowRoute__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24378:1: ( ( 'flow' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24379:1: ( 'flow' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24379:1: ( 'flow' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24380:1: 'flow'
+            {
+             before(grammarAccess.getFlowRouteAccess().getFlowKeyword_7()); 
+            match(input,117,FollowSets002.FOLLOW_117_in_rule__FlowRoute__Group__7__Impl48293); 
+             after(grammarAccess.getFlowRouteAccess().getFlowKeyword_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__7__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24393:1: rule__FlowRoute__Group__8 : rule__FlowRoute__Group__8__Impl rule__FlowRoute__Group__9 ;
+    public final void rule__FlowRoute__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24397:1: ( rule__FlowRoute__Group__8__Impl rule__FlowRoute__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24398:2: rule__FlowRoute__Group__8__Impl rule__FlowRoute__Group__9
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__8__Impl_in_rule__FlowRoute__Group__848324);
+            rule__FlowRoute__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__9_in_rule__FlowRoute__Group__848327);
+            rule__FlowRoute__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__8"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24405:1: rule__FlowRoute__Group__8__Impl : ( ( rule__FlowRoute__FlowAssignment_8 ) ) ;
+    public final void rule__FlowRoute__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24409:1: ( ( ( rule__FlowRoute__FlowAssignment_8 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24410:1: ( ( rule__FlowRoute__FlowAssignment_8 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24410:1: ( ( rule__FlowRoute__FlowAssignment_8 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24411:1: ( rule__FlowRoute__FlowAssignment_8 )
+            {
+             before(grammarAccess.getFlowRouteAccess().getFlowAssignment_8()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24412:1: ( rule__FlowRoute__FlowAssignment_8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24412:2: rule__FlowRoute__FlowAssignment_8
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__FlowAssignment_8_in_rule__FlowRoute__Group__8__Impl48354);
+            rule__FlowRoute__FlowAssignment_8();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFlowRouteAccess().getFlowAssignment_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__8__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24422:1: rule__FlowRoute__Group__9 : rule__FlowRoute__Group__9__Impl rule__FlowRoute__Group__10 ;
+    public final void rule__FlowRoute__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24426:1: ( rule__FlowRoute__Group__9__Impl rule__FlowRoute__Group__10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24427:2: rule__FlowRoute__Group__9__Impl rule__FlowRoute__Group__10
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__9__Impl_in_rule__FlowRoute__Group__948384);
+            rule__FlowRoute__Group__9__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__10_in_rule__FlowRoute__Group__948387);
+            rule__FlowRoute__Group__10();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__9"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24434:1: rule__FlowRoute__Group__9__Impl : ( 'start' ) ;
+    public final void rule__FlowRoute__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24438:1: ( ( 'start' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24439:1: ( 'start' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24439:1: ( 'start' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24440:1: 'start'
+            {
+             before(grammarAccess.getFlowRouteAccess().getStartKeyword_9()); 
+            match(input,144,FollowSets002.FOLLOW_144_in_rule__FlowRoute__Group__9__Impl48415); 
+             after(grammarAccess.getFlowRouteAccess().getStartKeyword_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__9__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24453:1: rule__FlowRoute__Group__10 : rule__FlowRoute__Group__10__Impl rule__FlowRoute__Group__11 ;
+    public final void rule__FlowRoute__Group__10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24457:1: ( rule__FlowRoute__Group__10__Impl rule__FlowRoute__Group__11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24458:2: rule__FlowRoute__Group__10__Impl rule__FlowRoute__Group__11
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__10__Impl_in_rule__FlowRoute__Group__1048446);
+            rule__FlowRoute__Group__10__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__11_in_rule__FlowRoute__Group__1048449);
+            rule__FlowRoute__Group__11();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__10"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__10__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24465:1: rule__FlowRoute__Group__10__Impl : ( ( rule__FlowRoute__StartAssignment_10 ) ) ;
+    public final void rule__FlowRoute__Group__10__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24469:1: ( ( ( rule__FlowRoute__StartAssignment_10 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24470:1: ( ( rule__FlowRoute__StartAssignment_10 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24470:1: ( ( rule__FlowRoute__StartAssignment_10 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24471:1: ( rule__FlowRoute__StartAssignment_10 )
+            {
+             before(grammarAccess.getFlowRouteAccess().getStartAssignment_10()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24472:1: ( rule__FlowRoute__StartAssignment_10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24472:2: rule__FlowRoute__StartAssignment_10
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__StartAssignment_10_in_rule__FlowRoute__Group__10__Impl48476);
+            rule__FlowRoute__StartAssignment_10();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFlowRouteAccess().getStartAssignment_10()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__10__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24482:1: rule__FlowRoute__Group__11 : rule__FlowRoute__Group__11__Impl rule__FlowRoute__Group__12 ;
+    public final void rule__FlowRoute__Group__11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24486:1: ( rule__FlowRoute__Group__11__Impl rule__FlowRoute__Group__12 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24487:2: rule__FlowRoute__Group__11__Impl rule__FlowRoute__Group__12
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__11__Impl_in_rule__FlowRoute__Group__1148506);
+            rule__FlowRoute__Group__11__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__12_in_rule__FlowRoute__Group__1148509);
+            rule__FlowRoute__Group__12();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__11"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__11__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24494:1: rule__FlowRoute__Group__11__Impl : ( 'end' ) ;
+    public final void rule__FlowRoute__Group__11__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24498:1: ( ( 'end' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24499:1: ( 'end' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24499:1: ( 'end' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24500:1: 'end'
+            {
+             before(grammarAccess.getFlowRouteAccess().getEndKeyword_11()); 
+            match(input,145,FollowSets002.FOLLOW_145_in_rule__FlowRoute__Group__11__Impl48537); 
+             after(grammarAccess.getFlowRouteAccess().getEndKeyword_11()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__11__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__12"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24513:1: rule__FlowRoute__Group__12 : rule__FlowRoute__Group__12__Impl rule__FlowRoute__Group__13 ;
+    public final void rule__FlowRoute__Group__12() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24517:1: ( rule__FlowRoute__Group__12__Impl rule__FlowRoute__Group__13 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24518:2: rule__FlowRoute__Group__12__Impl rule__FlowRoute__Group__13
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__12__Impl_in_rule__FlowRoute__Group__1248568);
+            rule__FlowRoute__Group__12__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__13_in_rule__FlowRoute__Group__1248571);
+            rule__FlowRoute__Group__13();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__12"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__12__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24525:1: rule__FlowRoute__Group__12__Impl : ( ( rule__FlowRoute__EndAssignment_12 ) ) ;
+    public final void rule__FlowRoute__Group__12__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24529:1: ( ( ( rule__FlowRoute__EndAssignment_12 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24530:1: ( ( rule__FlowRoute__EndAssignment_12 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24530:1: ( ( rule__FlowRoute__EndAssignment_12 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24531:1: ( rule__FlowRoute__EndAssignment_12 )
+            {
+             before(grammarAccess.getFlowRouteAccess().getEndAssignment_12()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24532:1: ( rule__FlowRoute__EndAssignment_12 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24532:2: rule__FlowRoute__EndAssignment_12
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__EndAssignment_12_in_rule__FlowRoute__Group__12__Impl48598);
+            rule__FlowRoute__EndAssignment_12();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFlowRouteAccess().getEndAssignment_12()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__12__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__13"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24542:1: rule__FlowRoute__Group__13 : rule__FlowRoute__Group__13__Impl rule__FlowRoute__Group__14 ;
+    public final void rule__FlowRoute__Group__13() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24546:1: ( rule__FlowRoute__Group__13__Impl rule__FlowRoute__Group__14 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24547:2: rule__FlowRoute__Group__13__Impl rule__FlowRoute__Group__14
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__13__Impl_in_rule__FlowRoute__Group__1348628);
+            rule__FlowRoute__Group__13__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__14_in_rule__FlowRoute__Group__1348631);
+            rule__FlowRoute__Group__14();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__13"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__13__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24554:1: rule__FlowRoute__Group__13__Impl : ( ( rule__FlowRoute__Group_13__0 )? ) ;
+    public final void rule__FlowRoute__Group__13__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24558:1: ( ( ( rule__FlowRoute__Group_13__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24559:1: ( ( rule__FlowRoute__Group_13__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24559:1: ( ( rule__FlowRoute__Group_13__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24560:1: ( rule__FlowRoute__Group_13__0 )?
+            {
+             before(grammarAccess.getFlowRouteAccess().getGroup_13()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24561:1: ( rule__FlowRoute__Group_13__0 )?
+            int alt122=2;
+            int LA122_0 = input.LA(1);
+
+            if ( (LA122_0==147) ) {
+                alt122=1;
+            }
+            switch (alt122) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24561:2: rule__FlowRoute__Group_13__0
+                    {
+                    pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_13__0_in_rule__FlowRoute__Group__13__Impl48658);
+                    rule__FlowRoute__Group_13__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getFlowRouteAccess().getGroup_13()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__13__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__14"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24571:1: rule__FlowRoute__Group__14 : rule__FlowRoute__Group__14__Impl ;
+    public final void rule__FlowRoute__Group__14() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24575:1: ( rule__FlowRoute__Group__14__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24576:2: rule__FlowRoute__Group__14__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group__14__Impl_in_rule__FlowRoute__Group__1448689);
+            rule__FlowRoute__Group__14__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__14"
+
+
+    // $ANTLR start "rule__FlowRoute__Group__14__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24582:1: rule__FlowRoute__Group__14__Impl : ( '}' ) ;
+    public final void rule__FlowRoute__Group__14__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24586:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24587:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24587:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24588:1: '}'
+            {
+             before(grammarAccess.getFlowRouteAccess().getRightCurlyBracketKeyword_14()); 
+            match(input,29,FollowSets002.FOLLOW_29_in_rule__FlowRoute__Group__14__Impl48717); 
+             after(grammarAccess.getFlowRouteAccess().getRightCurlyBracketKeyword_14()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group__14__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_5__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24631:1: rule__FlowRoute__Group_5__0 : rule__FlowRoute__Group_5__0__Impl rule__FlowRoute__Group_5__1 ;
+    public final void rule__FlowRoute__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24635:1: ( rule__FlowRoute__Group_5__0__Impl rule__FlowRoute__Group_5__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24636:2: rule__FlowRoute__Group_5__0__Impl rule__FlowRoute__Group_5__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_5__0__Impl_in_rule__FlowRoute__Group_5__048778);
+            rule__FlowRoute__Group_5__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_5__1_in_rule__FlowRoute__Group_5__048781);
+            rule__FlowRoute__Group_5__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_5__0"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_5__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24643:1: rule__FlowRoute__Group_5__0__Impl : ( 'alternativeNames' ) ;
+    public final void rule__FlowRoute__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24647:1: ( ( 'alternativeNames' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24648:1: ( 'alternativeNames' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24648:1: ( 'alternativeNames' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24649:1: 'alternativeNames'
+            {
+             before(grammarAccess.getFlowRouteAccess().getAlternativeNamesKeyword_5_0()); 
+            match(input,67,FollowSets002.FOLLOW_67_in_rule__FlowRoute__Group_5__0__Impl48809); 
+             after(grammarAccess.getFlowRouteAccess().getAlternativeNamesKeyword_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_5__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24662:1: rule__FlowRoute__Group_5__1 : rule__FlowRoute__Group_5__1__Impl rule__FlowRoute__Group_5__2 ;
+    public final void rule__FlowRoute__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24666:1: ( rule__FlowRoute__Group_5__1__Impl rule__FlowRoute__Group_5__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24667:2: rule__FlowRoute__Group_5__1__Impl rule__FlowRoute__Group_5__2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_5__1__Impl_in_rule__FlowRoute__Group_5__148840);
+            rule__FlowRoute__Group_5__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_5__2_in_rule__FlowRoute__Group_5__148843);
+            rule__FlowRoute__Group_5__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_5__1"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_5__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24674:1: rule__FlowRoute__Group_5__1__Impl : ( '{' ) ;
+    public final void rule__FlowRoute__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24678:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24679:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24679:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24680:1: '{'
+            {
+             before(grammarAccess.getFlowRouteAccess().getLeftCurlyBracketKeyword_5_1()); 
+            match(input,23,FollowSets002.FOLLOW_23_in_rule__FlowRoute__Group_5__1__Impl48871); 
+             after(grammarAccess.getFlowRouteAccess().getLeftCurlyBracketKeyword_5_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_5__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24693:1: rule__FlowRoute__Group_5__2 : rule__FlowRoute__Group_5__2__Impl rule__FlowRoute__Group_5__3 ;
+    public final void rule__FlowRoute__Group_5__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24697:1: ( rule__FlowRoute__Group_5__2__Impl rule__FlowRoute__Group_5__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24698:2: rule__FlowRoute__Group_5__2__Impl rule__FlowRoute__Group_5__3
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_5__2__Impl_in_rule__FlowRoute__Group_5__248902);
+            rule__FlowRoute__Group_5__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_5__3_in_rule__FlowRoute__Group_5__248905);
+            rule__FlowRoute__Group_5__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_5__2"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_5__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24705:1: rule__FlowRoute__Group_5__2__Impl : ( ( rule__FlowRoute__AlternativeNamesAssignment_5_2 ) ) ;
+    public final void rule__FlowRoute__Group_5__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24709:1: ( ( ( rule__FlowRoute__AlternativeNamesAssignment_5_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24710:1: ( ( rule__FlowRoute__AlternativeNamesAssignment_5_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24710:1: ( ( rule__FlowRoute__AlternativeNamesAssignment_5_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24711:1: ( rule__FlowRoute__AlternativeNamesAssignment_5_2 )
+            {
+             before(grammarAccess.getFlowRouteAccess().getAlternativeNamesAssignment_5_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24712:1: ( rule__FlowRoute__AlternativeNamesAssignment_5_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24712:2: rule__FlowRoute__AlternativeNamesAssignment_5_2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__AlternativeNamesAssignment_5_2_in_rule__FlowRoute__Group_5__2__Impl48932);
+            rule__FlowRoute__AlternativeNamesAssignment_5_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFlowRouteAccess().getAlternativeNamesAssignment_5_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_5__2__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_5__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24722:1: rule__FlowRoute__Group_5__3 : rule__FlowRoute__Group_5__3__Impl rule__FlowRoute__Group_5__4 ;
+    public final void rule__FlowRoute__Group_5__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24726:1: ( rule__FlowRoute__Group_5__3__Impl rule__FlowRoute__Group_5__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24727:2: rule__FlowRoute__Group_5__3__Impl rule__FlowRoute__Group_5__4
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_5__3__Impl_in_rule__FlowRoute__Group_5__348962);
+            rule__FlowRoute__Group_5__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_5__4_in_rule__FlowRoute__Group_5__348965);
+            rule__FlowRoute__Group_5__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_5__3"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_5__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24734:1: rule__FlowRoute__Group_5__3__Impl : ( ( rule__FlowRoute__Group_5_3__0 )* ) ;
+    public final void rule__FlowRoute__Group_5__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24738:1: ( ( ( rule__FlowRoute__Group_5_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24739:1: ( ( rule__FlowRoute__Group_5_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24739:1: ( ( rule__FlowRoute__Group_5_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24740:1: ( rule__FlowRoute__Group_5_3__0 )*
+            {
+             before(grammarAccess.getFlowRouteAccess().getGroup_5_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24741:1: ( rule__FlowRoute__Group_5_3__0 )*
+            loop123:
+            do {
+                int alt123=2;
+                int LA123_0 = input.LA(1);
+
+                if ( (LA123_0==31) ) {
+                    alt123=1;
+                }
+
+
+                switch (alt123) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24741:2: rule__FlowRoute__Group_5_3__0
+            	    {
+            	    pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_5_3__0_in_rule__FlowRoute__Group_5__3__Impl48992);
+            	    rule__FlowRoute__Group_5_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop123;
+                }
+            } while (true);
+
+             after(grammarAccess.getFlowRouteAccess().getGroup_5_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_5__3__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_5__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24751:1: rule__FlowRoute__Group_5__4 : rule__FlowRoute__Group_5__4__Impl ;
+    public final void rule__FlowRoute__Group_5__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24755:1: ( rule__FlowRoute__Group_5__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24756:2: rule__FlowRoute__Group_5__4__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_5__4__Impl_in_rule__FlowRoute__Group_5__449023);
+            rule__FlowRoute__Group_5__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_5__4"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_5__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24762:1: rule__FlowRoute__Group_5__4__Impl : ( '}' ) ;
+    public final void rule__FlowRoute__Group_5__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24766:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24767:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24767:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24768:1: '}'
+            {
+             before(grammarAccess.getFlowRouteAccess().getRightCurlyBracketKeyword_5_4()); 
+            match(input,29,FollowSets002.FOLLOW_29_in_rule__FlowRoute__Group_5__4__Impl49051); 
+             after(grammarAccess.getFlowRouteAccess().getRightCurlyBracketKeyword_5_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_5__4__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_5_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24791:1: rule__FlowRoute__Group_5_3__0 : rule__FlowRoute__Group_5_3__0__Impl rule__FlowRoute__Group_5_3__1 ;
+    public final void rule__FlowRoute__Group_5_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24795:1: ( rule__FlowRoute__Group_5_3__0__Impl rule__FlowRoute__Group_5_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24796:2: rule__FlowRoute__Group_5_3__0__Impl rule__FlowRoute__Group_5_3__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_5_3__0__Impl_in_rule__FlowRoute__Group_5_3__049092);
+            rule__FlowRoute__Group_5_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_5_3__1_in_rule__FlowRoute__Group_5_3__049095);
+            rule__FlowRoute__Group_5_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_5_3__0"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_5_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24803:1: rule__FlowRoute__Group_5_3__0__Impl : ( ',' ) ;
+    public final void rule__FlowRoute__Group_5_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24807:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24808:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24808:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24809:1: ','
+            {
+             before(grammarAccess.getFlowRouteAccess().getCommaKeyword_5_3_0()); 
+            match(input,31,FollowSets002.FOLLOW_31_in_rule__FlowRoute__Group_5_3__0__Impl49123); 
+             after(grammarAccess.getFlowRouteAccess().getCommaKeyword_5_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_5_3__0__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_5_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24822:1: rule__FlowRoute__Group_5_3__1 : rule__FlowRoute__Group_5_3__1__Impl ;
+    public final void rule__FlowRoute__Group_5_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24826:1: ( rule__FlowRoute__Group_5_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24827:2: rule__FlowRoute__Group_5_3__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_5_3__1__Impl_in_rule__FlowRoute__Group_5_3__149154);
+            rule__FlowRoute__Group_5_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_5_3__1"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_5_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24833:1: rule__FlowRoute__Group_5_3__1__Impl : ( ( rule__FlowRoute__AlternativeNamesAssignment_5_3_1 ) ) ;
+    public final void rule__FlowRoute__Group_5_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24837:1: ( ( ( rule__FlowRoute__AlternativeNamesAssignment_5_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24838:1: ( ( rule__FlowRoute__AlternativeNamesAssignment_5_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24838:1: ( ( rule__FlowRoute__AlternativeNamesAssignment_5_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24839:1: ( rule__FlowRoute__AlternativeNamesAssignment_5_3_1 )
+            {
+             before(grammarAccess.getFlowRouteAccess().getAlternativeNamesAssignment_5_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24840:1: ( rule__FlowRoute__AlternativeNamesAssignment_5_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24840:2: rule__FlowRoute__AlternativeNamesAssignment_5_3_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__AlternativeNamesAssignment_5_3_1_in_rule__FlowRoute__Group_5_3__1__Impl49181);
+            rule__FlowRoute__AlternativeNamesAssignment_5_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFlowRouteAccess().getAlternativeNamesAssignment_5_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_5_3__1__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_6__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24854:1: rule__FlowRoute__Group_6__0 : rule__FlowRoute__Group_6__0__Impl rule__FlowRoute__Group_6__1 ;
+    public final void rule__FlowRoute__Group_6__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24858:1: ( rule__FlowRoute__Group_6__0__Impl rule__FlowRoute__Group_6__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24859:2: rule__FlowRoute__Group_6__0__Impl rule__FlowRoute__Group_6__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_6__0__Impl_in_rule__FlowRoute__Group_6__049215);
+            rule__FlowRoute__Group_6__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_6__1_in_rule__FlowRoute__Group_6__049218);
+            rule__FlowRoute__Group_6__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_6__0"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_6__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24866:1: rule__FlowRoute__Group_6__0__Impl : ( 'numHops' ) ;
+    public final void rule__FlowRoute__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24870:1: ( ( 'numHops' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24871:1: ( 'numHops' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24871:1: ( 'numHops' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24872:1: 'numHops'
+            {
+             before(grammarAccess.getFlowRouteAccess().getNumHopsKeyword_6_0()); 
+            match(input,146,FollowSets002.FOLLOW_146_in_rule__FlowRoute__Group_6__0__Impl49246); 
+             after(grammarAccess.getFlowRouteAccess().getNumHopsKeyword_6_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_6__0__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_6__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24885:1: rule__FlowRoute__Group_6__1 : rule__FlowRoute__Group_6__1__Impl ;
+    public final void rule__FlowRoute__Group_6__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24889:1: ( rule__FlowRoute__Group_6__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24890:2: rule__FlowRoute__Group_6__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_6__1__Impl_in_rule__FlowRoute__Group_6__149277);
+            rule__FlowRoute__Group_6__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_6__1"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_6__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24896:1: rule__FlowRoute__Group_6__1__Impl : ( ( rule__FlowRoute__NumHopsAssignment_6_1 ) ) ;
+    public final void rule__FlowRoute__Group_6__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24900:1: ( ( ( rule__FlowRoute__NumHopsAssignment_6_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24901:1: ( ( rule__FlowRoute__NumHopsAssignment_6_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24901:1: ( ( rule__FlowRoute__NumHopsAssignment_6_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24902:1: ( rule__FlowRoute__NumHopsAssignment_6_1 )
+            {
+             before(grammarAccess.getFlowRouteAccess().getNumHopsAssignment_6_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24903:1: ( rule__FlowRoute__NumHopsAssignment_6_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24903:2: rule__FlowRoute__NumHopsAssignment_6_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__NumHopsAssignment_6_1_in_rule__FlowRoute__Group_6__1__Impl49304);
+            rule__FlowRoute__NumHopsAssignment_6_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFlowRouteAccess().getNumHopsAssignment_6_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_6__1__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_13__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24917:1: rule__FlowRoute__Group_13__0 : rule__FlowRoute__Group_13__0__Impl rule__FlowRoute__Group_13__1 ;
+    public final void rule__FlowRoute__Group_13__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24921:1: ( rule__FlowRoute__Group_13__0__Impl rule__FlowRoute__Group_13__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24922:2: rule__FlowRoute__Group_13__0__Impl rule__FlowRoute__Group_13__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_13__0__Impl_in_rule__FlowRoute__Group_13__049338);
+            rule__FlowRoute__Group_13__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_13__1_in_rule__FlowRoute__Group_13__049341);
+            rule__FlowRoute__Group_13__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_13__0"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_13__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24929:1: rule__FlowRoute__Group_13__0__Impl : ( 'hops' ) ;
+    public final void rule__FlowRoute__Group_13__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24933:1: ( ( 'hops' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24934:1: ( 'hops' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24934:1: ( 'hops' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24935:1: 'hops'
+            {
+             before(grammarAccess.getFlowRouteAccess().getHopsKeyword_13_0()); 
+            match(input,147,FollowSets002.FOLLOW_147_in_rule__FlowRoute__Group_13__0__Impl49369); 
+             after(grammarAccess.getFlowRouteAccess().getHopsKeyword_13_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_13__0__Impl"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_13__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24948:1: rule__FlowRoute__Group_13__1 : rule__FlowRoute__Group_13__1__Impl ;
+    public final void rule__FlowRoute__Group_13__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24952:1: ( rule__FlowRoute__Group_13__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24953:2: rule__FlowRoute__Group_13__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__Group_13__1__Impl_in_rule__FlowRoute__Group_13__149400);
+            rule__FlowRoute__Group_13__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_13__1"
+
+
+    // $ANTLR start "rule__FlowRoute__Group_13__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24959:1: rule__FlowRoute__Group_13__1__Impl : ( ( rule__FlowRoute__HopsAssignment_13_1 ) ) ;
+    public final void rule__FlowRoute__Group_13__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24963:1: ( ( ( rule__FlowRoute__HopsAssignment_13_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24964:1: ( ( rule__FlowRoute__HopsAssignment_13_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24964:1: ( ( rule__FlowRoute__HopsAssignment_13_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24965:1: ( rule__FlowRoute__HopsAssignment_13_1 )
+            {
+             before(grammarAccess.getFlowRouteAccess().getHopsAssignment_13_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24966:1: ( rule__FlowRoute__HopsAssignment_13_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24966:2: rule__FlowRoute__HopsAssignment_13_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__FlowRoute__HopsAssignment_13_1_in_rule__FlowRoute__Group_13__1__Impl49427);
+            rule__FlowRoute__HopsAssignment_13_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getFlowRouteAccess().getHopsAssignment_13_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__Group_13__1__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24980:1: rule__Direction__Group__0 : rule__Direction__Group__0__Impl rule__Direction__Group__1 ;
+    public final void rule__Direction__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24984:1: ( rule__Direction__Group__0__Impl rule__Direction__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24985:2: rule__Direction__Group__0__Impl rule__Direction__Group__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__0__Impl_in_rule__Direction__Group__049461);
+            rule__Direction__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__1_in_rule__Direction__Group__049464);
+            rule__Direction__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__0"
+
+
+    // $ANTLR start "rule__Direction__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24992:1: rule__Direction__Group__0__Impl : ( ( rule__Direction__IsDefaultAssignment_0 )? ) ;
+    public final void rule__Direction__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24996:1: ( ( ( rule__Direction__IsDefaultAssignment_0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24997:1: ( ( rule__Direction__IsDefaultAssignment_0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24997:1: ( ( rule__Direction__IsDefaultAssignment_0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24998:1: ( rule__Direction__IsDefaultAssignment_0 )?
+            {
+             before(grammarAccess.getDirectionAccess().getIsDefaultAssignment_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24999:1: ( rule__Direction__IsDefaultAssignment_0 )?
+            int alt124=2;
+            int LA124_0 = input.LA(1);
+
+            if ( (LA124_0==161) ) {
+                alt124=1;
+            }
+            switch (alt124) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:24999:2: rule__Direction__IsDefaultAssignment_0
+                    {
+                    pushFollow(FollowSets002.FOLLOW_rule__Direction__IsDefaultAssignment_0_in_rule__Direction__Group__0__Impl49491);
+                    rule__Direction__IsDefaultAssignment_0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getDirectionAccess().getIsDefaultAssignment_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__0__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25009:1: rule__Direction__Group__1 : rule__Direction__Group__1__Impl rule__Direction__Group__2 ;
+    public final void rule__Direction__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25013:1: ( rule__Direction__Group__1__Impl rule__Direction__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25014:2: rule__Direction__Group__1__Impl rule__Direction__Group__2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__1__Impl_in_rule__Direction__Group__149522);
+            rule__Direction__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__2_in_rule__Direction__Group__149525);
+            rule__Direction__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__1"
+
+
+    // $ANTLR start "rule__Direction__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25021:1: rule__Direction__Group__1__Impl : ( 'Direction' ) ;
+    public final void rule__Direction__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25025:1: ( ( 'Direction' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25026:1: ( 'Direction' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25026:1: ( 'Direction' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25027:1: 'Direction'
+            {
+             before(grammarAccess.getDirectionAccess().getDirectionKeyword_1()); 
+            match(input,149,FollowSets002.FOLLOW_149_in_rule__Direction__Group__1__Impl49553); 
+             after(grammarAccess.getDirectionAccess().getDirectionKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__1__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25040:1: rule__Direction__Group__2 : rule__Direction__Group__2__Impl rule__Direction__Group__3 ;
+    public final void rule__Direction__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25044:1: ( rule__Direction__Group__2__Impl rule__Direction__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25045:2: rule__Direction__Group__2__Impl rule__Direction__Group__3
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__2__Impl_in_rule__Direction__Group__249584);
+            rule__Direction__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__3_in_rule__Direction__Group__249587);
+            rule__Direction__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__2"
+
+
+    // $ANTLR start "rule__Direction__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25052:1: rule__Direction__Group__2__Impl : ( ( rule__Direction__IdAssignment_2 ) ) ;
+    public final void rule__Direction__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25056:1: ( ( ( rule__Direction__IdAssignment_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25057:1: ( ( rule__Direction__IdAssignment_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25057:1: ( ( rule__Direction__IdAssignment_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25058:1: ( rule__Direction__IdAssignment_2 )
+            {
+             before(grammarAccess.getDirectionAccess().getIdAssignment_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25059:1: ( rule__Direction__IdAssignment_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25059:2: rule__Direction__IdAssignment_2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__IdAssignment_2_in_rule__Direction__Group__2__Impl49614);
+            rule__Direction__IdAssignment_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDirectionAccess().getIdAssignment_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__2__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25069:1: rule__Direction__Group__3 : rule__Direction__Group__3__Impl rule__Direction__Group__4 ;
+    public final void rule__Direction__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25073:1: ( rule__Direction__Group__3__Impl rule__Direction__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25074:2: rule__Direction__Group__3__Impl rule__Direction__Group__4
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__3__Impl_in_rule__Direction__Group__349644);
+            rule__Direction__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__4_in_rule__Direction__Group__349647);
+            rule__Direction__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__3"
+
+
+    // $ANTLR start "rule__Direction__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25081:1: rule__Direction__Group__3__Impl : ( '{' ) ;
+    public final void rule__Direction__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25085:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25086:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25086:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25087:1: '{'
+            {
+             before(grammarAccess.getDirectionAccess().getLeftCurlyBracketKeyword_3()); 
+            match(input,23,FollowSets002.FOLLOW_23_in_rule__Direction__Group__3__Impl49675); 
+             after(grammarAccess.getDirectionAccess().getLeftCurlyBracketKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__3__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25100:1: rule__Direction__Group__4 : rule__Direction__Group__4__Impl rule__Direction__Group__5 ;
+    public final void rule__Direction__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25104:1: ( rule__Direction__Group__4__Impl rule__Direction__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25105:2: rule__Direction__Group__4__Impl rule__Direction__Group__5
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__4__Impl_in_rule__Direction__Group__449706);
+            rule__Direction__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__5_in_rule__Direction__Group__449709);
+            rule__Direction__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__4"
+
+
+    // $ANTLR start "rule__Direction__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25112:1: rule__Direction__Group__4__Impl : ( 'name' ) ;
+    public final void rule__Direction__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25116:1: ( ( 'name' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25117:1: ( 'name' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25117:1: ( 'name' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25118:1: 'name'
+            {
+             before(grammarAccess.getDirectionAccess().getNameKeyword_4()); 
+            match(input,65,FollowSets002.FOLLOW_65_in_rule__Direction__Group__4__Impl49737); 
+             after(grammarAccess.getDirectionAccess().getNameKeyword_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__4__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25131:1: rule__Direction__Group__5 : rule__Direction__Group__5__Impl rule__Direction__Group__6 ;
+    public final void rule__Direction__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25135:1: ( rule__Direction__Group__5__Impl rule__Direction__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25136:2: rule__Direction__Group__5__Impl rule__Direction__Group__6
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__5__Impl_in_rule__Direction__Group__549768);
+            rule__Direction__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__6_in_rule__Direction__Group__549771);
+            rule__Direction__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__5"
+
+
+    // $ANTLR start "rule__Direction__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25143:1: rule__Direction__Group__5__Impl : ( ( rule__Direction__NameAssignment_5 ) ) ;
+    public final void rule__Direction__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25147:1: ( ( ( rule__Direction__NameAssignment_5 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25148:1: ( ( rule__Direction__NameAssignment_5 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25148:1: ( ( rule__Direction__NameAssignment_5 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25149:1: ( rule__Direction__NameAssignment_5 )
+            {
+             before(grammarAccess.getDirectionAccess().getNameAssignment_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25150:1: ( rule__Direction__NameAssignment_5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25150:2: rule__Direction__NameAssignment_5
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__NameAssignment_5_in_rule__Direction__Group__5__Impl49798);
+            rule__Direction__NameAssignment_5();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDirectionAccess().getNameAssignment_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__5__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25160:1: rule__Direction__Group__6 : rule__Direction__Group__6__Impl rule__Direction__Group__7 ;
+    public final void rule__Direction__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25164:1: ( rule__Direction__Group__6__Impl rule__Direction__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25165:2: rule__Direction__Group__6__Impl rule__Direction__Group__7
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__6__Impl_in_rule__Direction__Group__649828);
+            rule__Direction__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__7_in_rule__Direction__Group__649831);
+            rule__Direction__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__6"
+
+
+    // $ANTLR start "rule__Direction__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25172:1: rule__Direction__Group__6__Impl : ( ( rule__Direction__Group_6__0 )? ) ;
+    public final void rule__Direction__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25176:1: ( ( ( rule__Direction__Group_6__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25177:1: ( ( rule__Direction__Group_6__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25177:1: ( ( rule__Direction__Group_6__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25178:1: ( rule__Direction__Group_6__0 )?
+            {
+             before(grammarAccess.getDirectionAccess().getGroup_6()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25179:1: ( rule__Direction__Group_6__0 )?
+            int alt125=2;
+            int LA125_0 = input.LA(1);
+
+            if ( (LA125_0==67) ) {
+                alt125=1;
+            }
+            switch (alt125) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25179:2: rule__Direction__Group_6__0
+                    {
+                    pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_6__0_in_rule__Direction__Group__6__Impl49858);
+                    rule__Direction__Group_6__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getDirectionAccess().getGroup_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__6__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25189:1: rule__Direction__Group__7 : rule__Direction__Group__7__Impl rule__Direction__Group__8 ;
+    public final void rule__Direction__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25193:1: ( rule__Direction__Group__7__Impl rule__Direction__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25194:2: rule__Direction__Group__7__Impl rule__Direction__Group__8
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__7__Impl_in_rule__Direction__Group__749889);
+            rule__Direction__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__8_in_rule__Direction__Group__749892);
+            rule__Direction__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__7"
+
+
+    // $ANTLR start "rule__Direction__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25201:1: rule__Direction__Group__7__Impl : ( ( rule__Direction__Group_7__0 )? ) ;
+    public final void rule__Direction__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25205:1: ( ( ( rule__Direction__Group_7__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25206:1: ( ( rule__Direction__Group_7__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25206:1: ( ( rule__Direction__Group_7__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25207:1: ( rule__Direction__Group_7__0 )?
+            {
+             before(grammarAccess.getDirectionAccess().getGroup_7()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25208:1: ( rule__Direction__Group_7__0 )?
+            int alt126=2;
+            int LA126_0 = input.LA(1);
+
+            if ( (LA126_0==152) ) {
+                alt126=1;
+            }
+            switch (alt126) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25208:2: rule__Direction__Group_7__0
+                    {
+                    pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_7__0_in_rule__Direction__Group__7__Impl49919);
+                    rule__Direction__Group_7__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getDirectionAccess().getGroup_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__7__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25218:1: rule__Direction__Group__8 : rule__Direction__Group__8__Impl rule__Direction__Group__9 ;
+    public final void rule__Direction__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25222:1: ( rule__Direction__Group__8__Impl rule__Direction__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25223:2: rule__Direction__Group__8__Impl rule__Direction__Group__9
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__8__Impl_in_rule__Direction__Group__849950);
+            rule__Direction__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__9_in_rule__Direction__Group__849953);
+            rule__Direction__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__8"
+
+
+    // $ANTLR start "rule__Direction__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25230:1: rule__Direction__Group__8__Impl : ( 'onNode' ) ;
+    public final void rule__Direction__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25234:1: ( ( 'onNode' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25235:1: ( 'onNode' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25235:1: ( 'onNode' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25236:1: 'onNode'
+            {
+             before(grammarAccess.getDirectionAccess().getOnNodeKeyword_8()); 
+            match(input,150,FollowSets002.FOLLOW_150_in_rule__Direction__Group__8__Impl49981); 
+             after(grammarAccess.getDirectionAccess().getOnNodeKeyword_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__8__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25249:1: rule__Direction__Group__9 : rule__Direction__Group__9__Impl rule__Direction__Group__10 ;
+    public final void rule__Direction__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25253:1: ( rule__Direction__Group__9__Impl rule__Direction__Group__10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25254:2: rule__Direction__Group__9__Impl rule__Direction__Group__10
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__9__Impl_in_rule__Direction__Group__950012);
+            rule__Direction__Group__9__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__10_in_rule__Direction__Group__950015);
+            rule__Direction__Group__10();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__9"
+
+
+    // $ANTLR start "rule__Direction__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25261:1: rule__Direction__Group__9__Impl : ( ( rule__Direction__OnNodeAssignment_9 ) ) ;
+    public final void rule__Direction__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25265:1: ( ( ( rule__Direction__OnNodeAssignment_9 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25266:1: ( ( rule__Direction__OnNodeAssignment_9 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25266:1: ( ( rule__Direction__OnNodeAssignment_9 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25267:1: ( rule__Direction__OnNodeAssignment_9 )
+            {
+             before(grammarAccess.getDirectionAccess().getOnNodeAssignment_9()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25268:1: ( rule__Direction__OnNodeAssignment_9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25268:2: rule__Direction__OnNodeAssignment_9
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__OnNodeAssignment_9_in_rule__Direction__Group__9__Impl50042);
+            rule__Direction__OnNodeAssignment_9();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDirectionAccess().getOnNodeAssignment_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__9__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group__10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25278:1: rule__Direction__Group__10 : rule__Direction__Group__10__Impl rule__Direction__Group__11 ;
+    public final void rule__Direction__Group__10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25282:1: ( rule__Direction__Group__10__Impl rule__Direction__Group__11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25283:2: rule__Direction__Group__10__Impl rule__Direction__Group__11
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__10__Impl_in_rule__Direction__Group__1050072);
+            rule__Direction__Group__10__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__11_in_rule__Direction__Group__1050075);
+            rule__Direction__Group__11();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__10"
+
+
+    // $ANTLR start "rule__Direction__Group__10__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25290:1: rule__Direction__Group__10__Impl : ( ( rule__Direction__Group_10__0 )? ) ;
+    public final void rule__Direction__Group__10__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25294:1: ( ( ( rule__Direction__Group_10__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25295:1: ( ( rule__Direction__Group_10__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25295:1: ( ( rule__Direction__Group_10__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25296:1: ( rule__Direction__Group_10__0 )?
+            {
+             before(grammarAccess.getDirectionAccess().getGroup_10()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25297:1: ( rule__Direction__Group_10__0 )?
+            int alt127=2;
+            int LA127_0 = input.LA(1);
+
+            if ( (LA127_0==117) ) {
+                alt127=1;
+            }
+            switch (alt127) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25297:2: rule__Direction__Group_10__0
+                    {
+                    pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_10__0_in_rule__Direction__Group__10__Impl50102);
+                    rule__Direction__Group_10__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getDirectionAccess().getGroup_10()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__10__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group__11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25307:1: rule__Direction__Group__11 : rule__Direction__Group__11__Impl rule__Direction__Group__12 ;
+    public final void rule__Direction__Group__11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25311:1: ( rule__Direction__Group__11__Impl rule__Direction__Group__12 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25312:2: rule__Direction__Group__11__Impl rule__Direction__Group__12
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__11__Impl_in_rule__Direction__Group__1150133);
+            rule__Direction__Group__11__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__12_in_rule__Direction__Group__1150136);
+            rule__Direction__Group__12();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__11"
+
+
+    // $ANTLR start "rule__Direction__Group__11__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25319:1: rule__Direction__Group__11__Impl : ( 'via' ) ;
+    public final void rule__Direction__Group__11__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25323:1: ( ( 'via' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25324:1: ( 'via' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25324:1: ( 'via' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25325:1: 'via'
+            {
+             before(grammarAccess.getDirectionAccess().getViaKeyword_11()); 
+            match(input,151,FollowSets002.FOLLOW_151_in_rule__Direction__Group__11__Impl50164); 
+             after(grammarAccess.getDirectionAccess().getViaKeyword_11()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__11__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group__12"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25338:1: rule__Direction__Group__12 : rule__Direction__Group__12__Impl rule__Direction__Group__13 ;
+    public final void rule__Direction__Group__12() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25342:1: ( rule__Direction__Group__12__Impl rule__Direction__Group__13 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25343:2: rule__Direction__Group__12__Impl rule__Direction__Group__13
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__12__Impl_in_rule__Direction__Group__1250195);
+            rule__Direction__Group__12__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__13_in_rule__Direction__Group__1250198);
+            rule__Direction__Group__13();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__12"
+
+
+    // $ANTLR start "rule__Direction__Group__12__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25350:1: rule__Direction__Group__12__Impl : ( ( rule__Direction__ViaAssignment_12 ) ) ;
+    public final void rule__Direction__Group__12__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25354:1: ( ( ( rule__Direction__ViaAssignment_12 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25355:1: ( ( rule__Direction__ViaAssignment_12 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25355:1: ( ( rule__Direction__ViaAssignment_12 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25356:1: ( rule__Direction__ViaAssignment_12 )
+            {
+             before(grammarAccess.getDirectionAccess().getViaAssignment_12()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25357:1: ( rule__Direction__ViaAssignment_12 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25357:2: rule__Direction__ViaAssignment_12
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__ViaAssignment_12_in_rule__Direction__Group__12__Impl50225);
+            rule__Direction__ViaAssignment_12();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDirectionAccess().getViaAssignment_12()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__12__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group__13"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25367:1: rule__Direction__Group__13 : rule__Direction__Group__13__Impl ;
+    public final void rule__Direction__Group__13() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25371:1: ( rule__Direction__Group__13__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25372:2: rule__Direction__Group__13__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group__13__Impl_in_rule__Direction__Group__1350255);
+            rule__Direction__Group__13__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__13"
+
+
+    // $ANTLR start "rule__Direction__Group__13__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25378:1: rule__Direction__Group__13__Impl : ( '}' ) ;
+    public final void rule__Direction__Group__13__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25382:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25383:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25383:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25384:1: '}'
+            {
+             before(grammarAccess.getDirectionAccess().getRightCurlyBracketKeyword_13()); 
+            match(input,29,FollowSets002.FOLLOW_29_in_rule__Direction__Group__13__Impl50283); 
+             after(grammarAccess.getDirectionAccess().getRightCurlyBracketKeyword_13()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group__13__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group_6__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25425:1: rule__Direction__Group_6__0 : rule__Direction__Group_6__0__Impl rule__Direction__Group_6__1 ;
+    public final void rule__Direction__Group_6__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25429:1: ( rule__Direction__Group_6__0__Impl rule__Direction__Group_6__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25430:2: rule__Direction__Group_6__0__Impl rule__Direction__Group_6__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_6__0__Impl_in_rule__Direction__Group_6__050342);
+            rule__Direction__Group_6__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_6__1_in_rule__Direction__Group_6__050345);
+            rule__Direction__Group_6__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_6__0"
+
+
+    // $ANTLR start "rule__Direction__Group_6__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25437:1: rule__Direction__Group_6__0__Impl : ( 'alternativeNames' ) ;
+    public final void rule__Direction__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25441:1: ( ( 'alternativeNames' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25442:1: ( 'alternativeNames' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25442:1: ( 'alternativeNames' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25443:1: 'alternativeNames'
+            {
+             before(grammarAccess.getDirectionAccess().getAlternativeNamesKeyword_6_0()); 
+            match(input,67,FollowSets002.FOLLOW_67_in_rule__Direction__Group_6__0__Impl50373); 
+             after(grammarAccess.getDirectionAccess().getAlternativeNamesKeyword_6_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_6__0__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group_6__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25456:1: rule__Direction__Group_6__1 : rule__Direction__Group_6__1__Impl rule__Direction__Group_6__2 ;
+    public final void rule__Direction__Group_6__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25460:1: ( rule__Direction__Group_6__1__Impl rule__Direction__Group_6__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25461:2: rule__Direction__Group_6__1__Impl rule__Direction__Group_6__2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_6__1__Impl_in_rule__Direction__Group_6__150404);
+            rule__Direction__Group_6__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_6__2_in_rule__Direction__Group_6__150407);
+            rule__Direction__Group_6__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_6__1"
+
+
+    // $ANTLR start "rule__Direction__Group_6__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25468:1: rule__Direction__Group_6__1__Impl : ( '{' ) ;
+    public final void rule__Direction__Group_6__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25472:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25473:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25473:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25474:1: '{'
+            {
+             before(grammarAccess.getDirectionAccess().getLeftCurlyBracketKeyword_6_1()); 
+            match(input,23,FollowSets002.FOLLOW_23_in_rule__Direction__Group_6__1__Impl50435); 
+             after(grammarAccess.getDirectionAccess().getLeftCurlyBracketKeyword_6_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_6__1__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group_6__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25487:1: rule__Direction__Group_6__2 : rule__Direction__Group_6__2__Impl rule__Direction__Group_6__3 ;
+    public final void rule__Direction__Group_6__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25491:1: ( rule__Direction__Group_6__2__Impl rule__Direction__Group_6__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25492:2: rule__Direction__Group_6__2__Impl rule__Direction__Group_6__3
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_6__2__Impl_in_rule__Direction__Group_6__250466);
+            rule__Direction__Group_6__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_6__3_in_rule__Direction__Group_6__250469);
+            rule__Direction__Group_6__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_6__2"
+
+
+    // $ANTLR start "rule__Direction__Group_6__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25499:1: rule__Direction__Group_6__2__Impl : ( ( rule__Direction__AlternativeNamesAssignment_6_2 ) ) ;
+    public final void rule__Direction__Group_6__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25503:1: ( ( ( rule__Direction__AlternativeNamesAssignment_6_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25504:1: ( ( rule__Direction__AlternativeNamesAssignment_6_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25504:1: ( ( rule__Direction__AlternativeNamesAssignment_6_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25505:1: ( rule__Direction__AlternativeNamesAssignment_6_2 )
+            {
+             before(grammarAccess.getDirectionAccess().getAlternativeNamesAssignment_6_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25506:1: ( rule__Direction__AlternativeNamesAssignment_6_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25506:2: rule__Direction__AlternativeNamesAssignment_6_2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__AlternativeNamesAssignment_6_2_in_rule__Direction__Group_6__2__Impl50496);
+            rule__Direction__AlternativeNamesAssignment_6_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDirectionAccess().getAlternativeNamesAssignment_6_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_6__2__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group_6__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25516:1: rule__Direction__Group_6__3 : rule__Direction__Group_6__3__Impl rule__Direction__Group_6__4 ;
+    public final void rule__Direction__Group_6__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25520:1: ( rule__Direction__Group_6__3__Impl rule__Direction__Group_6__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25521:2: rule__Direction__Group_6__3__Impl rule__Direction__Group_6__4
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_6__3__Impl_in_rule__Direction__Group_6__350526);
+            rule__Direction__Group_6__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_6__4_in_rule__Direction__Group_6__350529);
+            rule__Direction__Group_6__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_6__3"
+
+
+    // $ANTLR start "rule__Direction__Group_6__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25528:1: rule__Direction__Group_6__3__Impl : ( ( rule__Direction__Group_6_3__0 )* ) ;
+    public final void rule__Direction__Group_6__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25532:1: ( ( ( rule__Direction__Group_6_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25533:1: ( ( rule__Direction__Group_6_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25533:1: ( ( rule__Direction__Group_6_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25534:1: ( rule__Direction__Group_6_3__0 )*
+            {
+             before(grammarAccess.getDirectionAccess().getGroup_6_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25535:1: ( rule__Direction__Group_6_3__0 )*
+            loop128:
+            do {
+                int alt128=2;
+                int LA128_0 = input.LA(1);
+
+                if ( (LA128_0==31) ) {
+                    alt128=1;
+                }
+
+
+                switch (alt128) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25535:2: rule__Direction__Group_6_3__0
+            	    {
+            	    pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_6_3__0_in_rule__Direction__Group_6__3__Impl50556);
+            	    rule__Direction__Group_6_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop128;
+                }
+            } while (true);
+
+             after(grammarAccess.getDirectionAccess().getGroup_6_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_6__3__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group_6__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25545:1: rule__Direction__Group_6__4 : rule__Direction__Group_6__4__Impl ;
+    public final void rule__Direction__Group_6__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25549:1: ( rule__Direction__Group_6__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25550:2: rule__Direction__Group_6__4__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_6__4__Impl_in_rule__Direction__Group_6__450587);
+            rule__Direction__Group_6__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_6__4"
+
+
+    // $ANTLR start "rule__Direction__Group_6__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25556:1: rule__Direction__Group_6__4__Impl : ( '}' ) ;
+    public final void rule__Direction__Group_6__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25560:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25561:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25561:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25562:1: '}'
+            {
+             before(grammarAccess.getDirectionAccess().getRightCurlyBracketKeyword_6_4()); 
+            match(input,29,FollowSets002.FOLLOW_29_in_rule__Direction__Group_6__4__Impl50615); 
+             after(grammarAccess.getDirectionAccess().getRightCurlyBracketKeyword_6_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_6__4__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group_6_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25585:1: rule__Direction__Group_6_3__0 : rule__Direction__Group_6_3__0__Impl rule__Direction__Group_6_3__1 ;
+    public final void rule__Direction__Group_6_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25589:1: ( rule__Direction__Group_6_3__0__Impl rule__Direction__Group_6_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25590:2: rule__Direction__Group_6_3__0__Impl rule__Direction__Group_6_3__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_6_3__0__Impl_in_rule__Direction__Group_6_3__050656);
+            rule__Direction__Group_6_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_6_3__1_in_rule__Direction__Group_6_3__050659);
+            rule__Direction__Group_6_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_6_3__0"
+
+
+    // $ANTLR start "rule__Direction__Group_6_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25597:1: rule__Direction__Group_6_3__0__Impl : ( ',' ) ;
+    public final void rule__Direction__Group_6_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25601:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25602:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25602:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25603:1: ','
+            {
+             before(grammarAccess.getDirectionAccess().getCommaKeyword_6_3_0()); 
+            match(input,31,FollowSets002.FOLLOW_31_in_rule__Direction__Group_6_3__0__Impl50687); 
+             after(grammarAccess.getDirectionAccess().getCommaKeyword_6_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_6_3__0__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group_6_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25616:1: rule__Direction__Group_6_3__1 : rule__Direction__Group_6_3__1__Impl ;
+    public final void rule__Direction__Group_6_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25620:1: ( rule__Direction__Group_6_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25621:2: rule__Direction__Group_6_3__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_6_3__1__Impl_in_rule__Direction__Group_6_3__150718);
+            rule__Direction__Group_6_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_6_3__1"
+
+
+    // $ANTLR start "rule__Direction__Group_6_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25627:1: rule__Direction__Group_6_3__1__Impl : ( ( rule__Direction__AlternativeNamesAssignment_6_3_1 ) ) ;
+    public final void rule__Direction__Group_6_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25631:1: ( ( ( rule__Direction__AlternativeNamesAssignment_6_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25632:1: ( ( rule__Direction__AlternativeNamesAssignment_6_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25632:1: ( ( rule__Direction__AlternativeNamesAssignment_6_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25633:1: ( rule__Direction__AlternativeNamesAssignment_6_3_1 )
+            {
+             before(grammarAccess.getDirectionAccess().getAlternativeNamesAssignment_6_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25634:1: ( rule__Direction__AlternativeNamesAssignment_6_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25634:2: rule__Direction__AlternativeNamesAssignment_6_3_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__AlternativeNamesAssignment_6_3_1_in_rule__Direction__Group_6_3__1__Impl50745);
+            rule__Direction__AlternativeNamesAssignment_6_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDirectionAccess().getAlternativeNamesAssignment_6_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_6_3__1__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group_7__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25648:1: rule__Direction__Group_7__0 : rule__Direction__Group_7__0__Impl rule__Direction__Group_7__1 ;
+    public final void rule__Direction__Group_7__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25652:1: ( rule__Direction__Group_7__0__Impl rule__Direction__Group_7__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25653:2: rule__Direction__Group_7__0__Impl rule__Direction__Group_7__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_7__0__Impl_in_rule__Direction__Group_7__050779);
+            rule__Direction__Group_7__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_7__1_in_rule__Direction__Group_7__050782);
+            rule__Direction__Group_7__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_7__0"
+
+
+    // $ANTLR start "rule__Direction__Group_7__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25660:1: rule__Direction__Group_7__0__Impl : ( 'distance' ) ;
+    public final void rule__Direction__Group_7__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25664:1: ( ( 'distance' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25665:1: ( 'distance' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25665:1: ( 'distance' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25666:1: 'distance'
+            {
+             before(grammarAccess.getDirectionAccess().getDistanceKeyword_7_0()); 
+            match(input,152,FollowSets002.FOLLOW_152_in_rule__Direction__Group_7__0__Impl50810); 
+             after(grammarAccess.getDirectionAccess().getDistanceKeyword_7_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_7__0__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group_7__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25679:1: rule__Direction__Group_7__1 : rule__Direction__Group_7__1__Impl ;
+    public final void rule__Direction__Group_7__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25683:1: ( rule__Direction__Group_7__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25684:2: rule__Direction__Group_7__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_7__1__Impl_in_rule__Direction__Group_7__150841);
+            rule__Direction__Group_7__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_7__1"
+
+
+    // $ANTLR start "rule__Direction__Group_7__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25690:1: rule__Direction__Group_7__1__Impl : ( ( rule__Direction__DistanceAssignment_7_1 ) ) ;
+    public final void rule__Direction__Group_7__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25694:1: ( ( ( rule__Direction__DistanceAssignment_7_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25695:1: ( ( rule__Direction__DistanceAssignment_7_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25695:1: ( ( rule__Direction__DistanceAssignment_7_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25696:1: ( rule__Direction__DistanceAssignment_7_1 )
+            {
+             before(grammarAccess.getDirectionAccess().getDistanceAssignment_7_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25697:1: ( rule__Direction__DistanceAssignment_7_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25697:2: rule__Direction__DistanceAssignment_7_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__DistanceAssignment_7_1_in_rule__Direction__Group_7__1__Impl50868);
+            rule__Direction__DistanceAssignment_7_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDirectionAccess().getDistanceAssignment_7_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_7__1__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group_10__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25711:1: rule__Direction__Group_10__0 : rule__Direction__Group_10__0__Impl rule__Direction__Group_10__1 ;
+    public final void rule__Direction__Group_10__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25715:1: ( rule__Direction__Group_10__0__Impl rule__Direction__Group_10__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25716:2: rule__Direction__Group_10__0__Impl rule__Direction__Group_10__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_10__0__Impl_in_rule__Direction__Group_10__050902);
+            rule__Direction__Group_10__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_10__1_in_rule__Direction__Group_10__050905);
+            rule__Direction__Group_10__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_10__0"
+
+
+    // $ANTLR start "rule__Direction__Group_10__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25723:1: rule__Direction__Group_10__0__Impl : ( 'flow' ) ;
+    public final void rule__Direction__Group_10__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25727:1: ( ( 'flow' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25728:1: ( 'flow' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25728:1: ( 'flow' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25729:1: 'flow'
+            {
+             before(grammarAccess.getDirectionAccess().getFlowKeyword_10_0()); 
+            match(input,117,FollowSets002.FOLLOW_117_in_rule__Direction__Group_10__0__Impl50933); 
+             after(grammarAccess.getDirectionAccess().getFlowKeyword_10_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_10__0__Impl"
+
+
+    // $ANTLR start "rule__Direction__Group_10__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25742:1: rule__Direction__Group_10__1 : rule__Direction__Group_10__1__Impl ;
+    public final void rule__Direction__Group_10__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25746:1: ( rule__Direction__Group_10__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25747:2: rule__Direction__Group_10__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__Group_10__1__Impl_in_rule__Direction__Group_10__150964);
+            rule__Direction__Group_10__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_10__1"
+
+
+    // $ANTLR start "rule__Direction__Group_10__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25753:1: rule__Direction__Group_10__1__Impl : ( ( rule__Direction__FlowAssignment_10_1 ) ) ;
+    public final void rule__Direction__Group_10__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25757:1: ( ( ( rule__Direction__FlowAssignment_10_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25758:1: ( ( rule__Direction__FlowAssignment_10_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25758:1: ( ( rule__Direction__FlowAssignment_10_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25759:1: ( rule__Direction__FlowAssignment_10_1 )
+            {
+             before(grammarAccess.getDirectionAccess().getFlowAssignment_10_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25760:1: ( rule__Direction__FlowAssignment_10_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25760:2: rule__Direction__FlowAssignment_10_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Direction__FlowAssignment_10_1_in_rule__Direction__Group_10__1__Impl50991);
+            rule__Direction__FlowAssignment_10_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getDirectionAccess().getFlowAssignment_10_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__Group_10__1__Impl"
+
+
+    // $ANTLR start "rule__Hop__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25774:1: rule__Hop__Group__0 : rule__Hop__Group__0__Impl rule__Hop__Group__1 ;
+    public final void rule__Hop__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25778:1: ( rule__Hop__Group__0__Impl rule__Hop__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25779:2: rule__Hop__Group__0__Impl rule__Hop__Group__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Hop__Group__0__Impl_in_rule__Hop__Group__051025);
+            rule__Hop__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Hop__Group__1_in_rule__Hop__Group__051028);
+            rule__Hop__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Hop__Group__0"
+
+
+    // $ANTLR start "rule__Hop__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25786:1: rule__Hop__Group__0__Impl : ( 'Hop' ) ;
+    public final void rule__Hop__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25790:1: ( ( 'Hop' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25791:1: ( 'Hop' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25791:1: ( 'Hop' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25792:1: 'Hop'
+            {
+             before(grammarAccess.getHopAccess().getHopKeyword_0()); 
+            match(input,153,FollowSets002.FOLLOW_153_in_rule__Hop__Group__0__Impl51056); 
+             after(grammarAccess.getHopAccess().getHopKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Hop__Group__0__Impl"
+
+
+    // $ANTLR start "rule__Hop__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25805:1: rule__Hop__Group__1 : rule__Hop__Group__1__Impl rule__Hop__Group__2 ;
+    public final void rule__Hop__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25809:1: ( rule__Hop__Group__1__Impl rule__Hop__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25810:2: rule__Hop__Group__1__Impl rule__Hop__Group__2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Hop__Group__1__Impl_in_rule__Hop__Group__151087);
+            rule__Hop__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Hop__Group__2_in_rule__Hop__Group__151090);
+            rule__Hop__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Hop__Group__1"
+
+
+    // $ANTLR start "rule__Hop__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25817:1: rule__Hop__Group__1__Impl : ( '{' ) ;
+    public final void rule__Hop__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25821:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25822:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25822:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25823:1: '{'
+            {
+             before(grammarAccess.getHopAccess().getLeftCurlyBracketKeyword_1()); 
+            match(input,23,FollowSets002.FOLLOW_23_in_rule__Hop__Group__1__Impl51118); 
+             after(grammarAccess.getHopAccess().getLeftCurlyBracketKeyword_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Hop__Group__1__Impl"
+
+
+    // $ANTLR start "rule__Hop__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25836:1: rule__Hop__Group__2 : rule__Hop__Group__2__Impl rule__Hop__Group__3 ;
+    public final void rule__Hop__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25840:1: ( rule__Hop__Group__2__Impl rule__Hop__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25841:2: rule__Hop__Group__2__Impl rule__Hop__Group__3
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Hop__Group__2__Impl_in_rule__Hop__Group__251149);
+            rule__Hop__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Hop__Group__3_in_rule__Hop__Group__251152);
+            rule__Hop__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Hop__Group__2"
+
+
+    // $ANTLR start "rule__Hop__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25848:1: rule__Hop__Group__2__Impl : ( 'interfaceref' ) ;
+    public final void rule__Hop__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25852:1: ( ( 'interfaceref' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25853:1: ( 'interfaceref' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25853:1: ( 'interfaceref' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25854:1: 'interfaceref'
+            {
+             before(grammarAccess.getHopAccess().getInterfacerefKeyword_2()); 
+            match(input,154,FollowSets002.FOLLOW_154_in_rule__Hop__Group__2__Impl51180); 
+             after(grammarAccess.getHopAccess().getInterfacerefKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Hop__Group__2__Impl"
+
+
+    // $ANTLR start "rule__Hop__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25867:1: rule__Hop__Group__3 : rule__Hop__Group__3__Impl rule__Hop__Group__4 ;
+    public final void rule__Hop__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25871:1: ( rule__Hop__Group__3__Impl rule__Hop__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25872:2: rule__Hop__Group__3__Impl rule__Hop__Group__4
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Hop__Group__3__Impl_in_rule__Hop__Group__351211);
+            rule__Hop__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Hop__Group__4_in_rule__Hop__Group__351214);
+            rule__Hop__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Hop__Group__3"
+
+
+    // $ANTLR start "rule__Hop__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25879:1: rule__Hop__Group__3__Impl : ( ( rule__Hop__InterfacerefAssignment_3 ) ) ;
+    public final void rule__Hop__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25883:1: ( ( ( rule__Hop__InterfacerefAssignment_3 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25884:1: ( ( rule__Hop__InterfacerefAssignment_3 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25884:1: ( ( rule__Hop__InterfacerefAssignment_3 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25885:1: ( rule__Hop__InterfacerefAssignment_3 )
+            {
+             before(grammarAccess.getHopAccess().getInterfacerefAssignment_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25886:1: ( rule__Hop__InterfacerefAssignment_3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25886:2: rule__Hop__InterfacerefAssignment_3
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Hop__InterfacerefAssignment_3_in_rule__Hop__Group__3__Impl51241);
+            rule__Hop__InterfacerefAssignment_3();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getHopAccess().getInterfacerefAssignment_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Hop__Group__3__Impl"
+
+
+    // $ANTLR start "rule__Hop__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25896:1: rule__Hop__Group__4 : rule__Hop__Group__4__Impl rule__Hop__Group__5 ;
+    public final void rule__Hop__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25900:1: ( rule__Hop__Group__4__Impl rule__Hop__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25901:2: rule__Hop__Group__4__Impl rule__Hop__Group__5
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Hop__Group__4__Impl_in_rule__Hop__Group__451271);
+            rule__Hop__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Hop__Group__5_in_rule__Hop__Group__451274);
+            rule__Hop__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Hop__Group__4"
+
+
+    // $ANTLR start "rule__Hop__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25908:1: rule__Hop__Group__4__Impl : ( ( rule__Hop__Group_4__0 )? ) ;
+    public final void rule__Hop__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25912:1: ( ( ( rule__Hop__Group_4__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25913:1: ( ( rule__Hop__Group_4__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25913:1: ( ( rule__Hop__Group_4__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25914:1: ( rule__Hop__Group_4__0 )?
+            {
+             before(grammarAccess.getHopAccess().getGroup_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25915:1: ( rule__Hop__Group_4__0 )?
+            int alt129=2;
+            int LA129_0 = input.LA(1);
+
+            if ( (LA129_0==155) ) {
+                alt129=1;
+            }
+            switch (alt129) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25915:2: rule__Hop__Group_4__0
+                    {
+                    pushFollow(FollowSets002.FOLLOW_rule__Hop__Group_4__0_in_rule__Hop__Group__4__Impl51301);
+                    rule__Hop__Group_4__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getHopAccess().getGroup_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Hop__Group__4__Impl"
+
+
+    // $ANTLR start "rule__Hop__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25925:1: rule__Hop__Group__5 : rule__Hop__Group__5__Impl ;
+    public final void rule__Hop__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25929:1: ( rule__Hop__Group__5__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25930:2: rule__Hop__Group__5__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Hop__Group__5__Impl_in_rule__Hop__Group__551332);
+            rule__Hop__Group__5__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Hop__Group__5"
+
+
+    // $ANTLR start "rule__Hop__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25936:1: rule__Hop__Group__5__Impl : ( '}' ) ;
+    public final void rule__Hop__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25940:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25941:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25941:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25942:1: '}'
+            {
+             before(grammarAccess.getHopAccess().getRightCurlyBracketKeyword_5()); 
+            match(input,29,FollowSets002.FOLLOW_29_in_rule__Hop__Group__5__Impl51360); 
+             after(grammarAccess.getHopAccess().getRightCurlyBracketKeyword_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Hop__Group__5__Impl"
+
+
+    // $ANTLR start "rule__Hop__Group_4__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25967:1: rule__Hop__Group_4__0 : rule__Hop__Group_4__0__Impl rule__Hop__Group_4__1 ;
+    public final void rule__Hop__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25971:1: ( rule__Hop__Group_4__0__Impl rule__Hop__Group_4__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25972:2: rule__Hop__Group_4__0__Impl rule__Hop__Group_4__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Hop__Group_4__0__Impl_in_rule__Hop__Group_4__051403);
+            rule__Hop__Group_4__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__Hop__Group_4__1_in_rule__Hop__Group_4__051406);
+            rule__Hop__Group_4__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Hop__Group_4__0"
+
+
+    // $ANTLR start "rule__Hop__Group_4__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25979:1: rule__Hop__Group_4__0__Impl : ( 'nextHop' ) ;
+    public final void rule__Hop__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25983:1: ( ( 'nextHop' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25984:1: ( 'nextHop' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25984:1: ( 'nextHop' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25985:1: 'nextHop'
+            {
+             before(grammarAccess.getHopAccess().getNextHopKeyword_4_0()); 
+            match(input,155,FollowSets002.FOLLOW_155_in_rule__Hop__Group_4__0__Impl51434); 
+             after(grammarAccess.getHopAccess().getNextHopKeyword_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Hop__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__Hop__Group_4__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:25998:1: rule__Hop__Group_4__1 : rule__Hop__Group_4__1__Impl ;
+    public final void rule__Hop__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26002:1: ( rule__Hop__Group_4__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26003:2: rule__Hop__Group_4__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Hop__Group_4__1__Impl_in_rule__Hop__Group_4__151465);
+            rule__Hop__Group_4__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Hop__Group_4__1"
+
+
+    // $ANTLR start "rule__Hop__Group_4__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26009:1: rule__Hop__Group_4__1__Impl : ( ( rule__Hop__NextHopAssignment_4_1 ) ) ;
+    public final void rule__Hop__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26013:1: ( ( ( rule__Hop__NextHopAssignment_4_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26014:1: ( ( rule__Hop__NextHopAssignment_4_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26014:1: ( ( rule__Hop__NextHopAssignment_4_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26015:1: ( rule__Hop__NextHopAssignment_4_1 )
+            {
+             before(grammarAccess.getHopAccess().getNextHopAssignment_4_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26016:1: ( rule__Hop__NextHopAssignment_4_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26016:2: rule__Hop__NextHopAssignment_4_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__Hop__NextHopAssignment_4_1_in_rule__Hop__Group_4__1__Impl51492);
+            rule__Hop__NextHopAssignment_4_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getHopAccess().getNextHopAssignment_4_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Hop__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__EIntegerObject__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26030:1: rule__EIntegerObject__Group__0 : rule__EIntegerObject__Group__0__Impl rule__EIntegerObject__Group__1 ;
+    public final void rule__EIntegerObject__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26034:1: ( rule__EIntegerObject__Group__0__Impl rule__EIntegerObject__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26035:2: rule__EIntegerObject__Group__0__Impl rule__EIntegerObject__Group__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__EIntegerObject__Group__0__Impl_in_rule__EIntegerObject__Group__051526);
+            rule__EIntegerObject__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__EIntegerObject__Group__1_in_rule__EIntegerObject__Group__051529);
+            rule__EIntegerObject__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EIntegerObject__Group__0"
+
+
+    // $ANTLR start "rule__EIntegerObject__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26042:1: rule__EIntegerObject__Group__0__Impl : ( ( '-' )? ) ;
+    public final void rule__EIntegerObject__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26046:1: ( ( ( '-' )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26047:1: ( ( '-' )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26047:1: ( ( '-' )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26048:1: ( '-' )?
+            {
+             before(grammarAccess.getEIntegerObjectAccess().getHyphenMinusKeyword_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26049:1: ( '-' )?
+            int alt130=2;
+            int LA130_0 = input.LA(1);
+
+            if ( (LA130_0==87) ) {
+                alt130=1;
+            }
+            switch (alt130) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26050:2: '-'
+                    {
+                    match(input,87,FollowSets002.FOLLOW_87_in_rule__EIntegerObject__Group__0__Impl51558); 
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getEIntegerObjectAccess().getHyphenMinusKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EIntegerObject__Group__0__Impl"
+
+
+    // $ANTLR start "rule__EIntegerObject__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26061:1: rule__EIntegerObject__Group__1 : rule__EIntegerObject__Group__1__Impl ;
+    public final void rule__EIntegerObject__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26065:1: ( rule__EIntegerObject__Group__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26066:2: rule__EIntegerObject__Group__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__EIntegerObject__Group__1__Impl_in_rule__EIntegerObject__Group__151591);
+            rule__EIntegerObject__Group__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EIntegerObject__Group__1"
+
+
+    // $ANTLR start "rule__EIntegerObject__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26072:1: rule__EIntegerObject__Group__1__Impl : ( RULE_INT ) ;
+    public final void rule__EIntegerObject__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26076:1: ( ( RULE_INT ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26077:1: ( RULE_INT )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26077:1: ( RULE_INT )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26078:1: RULE_INT
+            {
+             before(grammarAccess.getEIntegerObjectAccess().getINTTerminalRuleCall_1()); 
+            match(input,RULE_INT,FollowSets002.FOLLOW_RULE_INT_in_rule__EIntegerObject__Group__1__Impl51618); 
+             after(grammarAccess.getEIntegerObjectAccess().getINTTerminalRuleCall_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EIntegerObject__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26093:1: rule__PhysicalNetworkInterface__Group__0 : rule__PhysicalNetworkInterface__Group__0__Impl rule__PhysicalNetworkInterface__Group__1 ;
+    public final void rule__PhysicalNetworkInterface__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26097:1: ( rule__PhysicalNetworkInterface__Group__0__Impl rule__PhysicalNetworkInterface__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26098:2: rule__PhysicalNetworkInterface__Group__0__Impl rule__PhysicalNetworkInterface__Group__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__0__Impl_in_rule__PhysicalNetworkInterface__Group__051651);
+            rule__PhysicalNetworkInterface__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__1_in_rule__PhysicalNetworkInterface__Group__051654);
+            rule__PhysicalNetworkInterface__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__0"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26105:1: rule__PhysicalNetworkInterface__Group__0__Impl : ( 'PhysicalNetworkInterface' ) ;
+    public final void rule__PhysicalNetworkInterface__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26109:1: ( ( 'PhysicalNetworkInterface' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26110:1: ( 'PhysicalNetworkInterface' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26110:1: ( 'PhysicalNetworkInterface' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26111:1: 'PhysicalNetworkInterface'
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getPhysicalNetworkInterfaceKeyword_0()); 
+            match(input,156,FollowSets002.FOLLOW_156_in_rule__PhysicalNetworkInterface__Group__0__Impl51682); 
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getPhysicalNetworkInterfaceKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26124:1: rule__PhysicalNetworkInterface__Group__1 : rule__PhysicalNetworkInterface__Group__1__Impl rule__PhysicalNetworkInterface__Group__2 ;
+    public final void rule__PhysicalNetworkInterface__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26128:1: ( rule__PhysicalNetworkInterface__Group__1__Impl rule__PhysicalNetworkInterface__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26129:2: rule__PhysicalNetworkInterface__Group__1__Impl rule__PhysicalNetworkInterface__Group__2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__1__Impl_in_rule__PhysicalNetworkInterface__Group__151713);
+            rule__PhysicalNetworkInterface__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__2_in_rule__PhysicalNetworkInterface__Group__151716);
+            rule__PhysicalNetworkInterface__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__1"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26136:1: rule__PhysicalNetworkInterface__Group__1__Impl : ( ( rule__PhysicalNetworkInterface__IdAssignment_1 ) ) ;
+    public final void rule__PhysicalNetworkInterface__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26140:1: ( ( ( rule__PhysicalNetworkInterface__IdAssignment_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26141:1: ( ( rule__PhysicalNetworkInterface__IdAssignment_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26141:1: ( ( rule__PhysicalNetworkInterface__IdAssignment_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26142:1: ( rule__PhysicalNetworkInterface__IdAssignment_1 )
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getIdAssignment_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26143:1: ( rule__PhysicalNetworkInterface__IdAssignment_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26143:2: rule__PhysicalNetworkInterface__IdAssignment_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__IdAssignment_1_in_rule__PhysicalNetworkInterface__Group__1__Impl51743);
+            rule__PhysicalNetworkInterface__IdAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getIdAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26153:1: rule__PhysicalNetworkInterface__Group__2 : rule__PhysicalNetworkInterface__Group__2__Impl rule__PhysicalNetworkInterface__Group__3 ;
+    public final void rule__PhysicalNetworkInterface__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26157:1: ( rule__PhysicalNetworkInterface__Group__2__Impl rule__PhysicalNetworkInterface__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26158:2: rule__PhysicalNetworkInterface__Group__2__Impl rule__PhysicalNetworkInterface__Group__3
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__2__Impl_in_rule__PhysicalNetworkInterface__Group__251773);
+            rule__PhysicalNetworkInterface__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__3_in_rule__PhysicalNetworkInterface__Group__251776);
+            rule__PhysicalNetworkInterface__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__2"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26165:1: rule__PhysicalNetworkInterface__Group__2__Impl : ( '{' ) ;
+    public final void rule__PhysicalNetworkInterface__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26169:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26170:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26170:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26171:1: '{'
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets002.FOLLOW_23_in_rule__PhysicalNetworkInterface__Group__2__Impl51804); 
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__2__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26184:1: rule__PhysicalNetworkInterface__Group__3 : rule__PhysicalNetworkInterface__Group__3__Impl rule__PhysicalNetworkInterface__Group__4 ;
+    public final void rule__PhysicalNetworkInterface__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26188:1: ( rule__PhysicalNetworkInterface__Group__3__Impl rule__PhysicalNetworkInterface__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26189:2: rule__PhysicalNetworkInterface__Group__3__Impl rule__PhysicalNetworkInterface__Group__4
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__3__Impl_in_rule__PhysicalNetworkInterface__Group__351835);
+            rule__PhysicalNetworkInterface__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__4_in_rule__PhysicalNetworkInterface__Group__351838);
+            rule__PhysicalNetworkInterface__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__3"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26196:1: rule__PhysicalNetworkInterface__Group__3__Impl : ( 'name' ) ;
+    public final void rule__PhysicalNetworkInterface__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26200:1: ( ( 'name' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26201:1: ( 'name' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26201:1: ( 'name' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26202:1: 'name'
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getNameKeyword_3()); 
+            match(input,65,FollowSets002.FOLLOW_65_in_rule__PhysicalNetworkInterface__Group__3__Impl51866); 
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getNameKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__3__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26215:1: rule__PhysicalNetworkInterface__Group__4 : rule__PhysicalNetworkInterface__Group__4__Impl rule__PhysicalNetworkInterface__Group__5 ;
+    public final void rule__PhysicalNetworkInterface__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26219:1: ( rule__PhysicalNetworkInterface__Group__4__Impl rule__PhysicalNetworkInterface__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26220:2: rule__PhysicalNetworkInterface__Group__4__Impl rule__PhysicalNetworkInterface__Group__5
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__4__Impl_in_rule__PhysicalNetworkInterface__Group__451897);
+            rule__PhysicalNetworkInterface__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__5_in_rule__PhysicalNetworkInterface__Group__451900);
+            rule__PhysicalNetworkInterface__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__4"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26227:1: rule__PhysicalNetworkInterface__Group__4__Impl : ( ( rule__PhysicalNetworkInterface__NameAssignment_4 ) ) ;
+    public final void rule__PhysicalNetworkInterface__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26231:1: ( ( ( rule__PhysicalNetworkInterface__NameAssignment_4 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26232:1: ( ( rule__PhysicalNetworkInterface__NameAssignment_4 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26232:1: ( ( rule__PhysicalNetworkInterface__NameAssignment_4 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26233:1: ( rule__PhysicalNetworkInterface__NameAssignment_4 )
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getNameAssignment_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26234:1: ( rule__PhysicalNetworkInterface__NameAssignment_4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26234:2: rule__PhysicalNetworkInterface__NameAssignment_4
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__NameAssignment_4_in_rule__PhysicalNetworkInterface__Group__4__Impl51927);
+            rule__PhysicalNetworkInterface__NameAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getNameAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__4__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26244:1: rule__PhysicalNetworkInterface__Group__5 : rule__PhysicalNetworkInterface__Group__5__Impl rule__PhysicalNetworkInterface__Group__6 ;
+    public final void rule__PhysicalNetworkInterface__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26248:1: ( rule__PhysicalNetworkInterface__Group__5__Impl rule__PhysicalNetworkInterface__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26249:2: rule__PhysicalNetworkInterface__Group__5__Impl rule__PhysicalNetworkInterface__Group__6
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__5__Impl_in_rule__PhysicalNetworkInterface__Group__551957);
+            rule__PhysicalNetworkInterface__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__6_in_rule__PhysicalNetworkInterface__Group__551960);
+            rule__PhysicalNetworkInterface__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__5"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26256:1: rule__PhysicalNetworkInterface__Group__5__Impl : ( ( rule__PhysicalNetworkInterface__Group_5__0 )? ) ;
+    public final void rule__PhysicalNetworkInterface__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26260:1: ( ( ( rule__PhysicalNetworkInterface__Group_5__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26261:1: ( ( rule__PhysicalNetworkInterface__Group_5__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26261:1: ( ( rule__PhysicalNetworkInterface__Group_5__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26262:1: ( rule__PhysicalNetworkInterface__Group_5__0 )?
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26263:1: ( rule__PhysicalNetworkInterface__Group_5__0 )?
+            int alt131=2;
+            int LA131_0 = input.LA(1);
+
+            if ( (LA131_0==67) ) {
+                alt131=1;
+            }
+            switch (alt131) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26263:2: rule__PhysicalNetworkInterface__Group_5__0
+                    {
+                    pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_5__0_in_rule__PhysicalNetworkInterface__Group__5__Impl51987);
+                    rule__PhysicalNetworkInterface__Group_5__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__5__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26273:1: rule__PhysicalNetworkInterface__Group__6 : rule__PhysicalNetworkInterface__Group__6__Impl rule__PhysicalNetworkInterface__Group__7 ;
+    public final void rule__PhysicalNetworkInterface__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26277:1: ( rule__PhysicalNetworkInterface__Group__6__Impl rule__PhysicalNetworkInterface__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26278:2: rule__PhysicalNetworkInterface__Group__6__Impl rule__PhysicalNetworkInterface__Group__7
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__6__Impl_in_rule__PhysicalNetworkInterface__Group__652018);
+            rule__PhysicalNetworkInterface__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__7_in_rule__PhysicalNetworkInterface__Group__652021);
+            rule__PhysicalNetworkInterface__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__6"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26285:1: rule__PhysicalNetworkInterface__Group__6__Impl : ( 'usedProtocolStack' ) ;
+    public final void rule__PhysicalNetworkInterface__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26289:1: ( ( 'usedProtocolStack' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26290:1: ( 'usedProtocolStack' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26290:1: ( 'usedProtocolStack' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26291:1: 'usedProtocolStack'
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackKeyword_6()); 
+            match(input,157,FollowSets002.FOLLOW_157_in_rule__PhysicalNetworkInterface__Group__6__Impl52049); 
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__6__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26304:1: rule__PhysicalNetworkInterface__Group__7 : rule__PhysicalNetworkInterface__Group__7__Impl rule__PhysicalNetworkInterface__Group__8 ;
+    public final void rule__PhysicalNetworkInterface__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26308:1: ( rule__PhysicalNetworkInterface__Group__7__Impl rule__PhysicalNetworkInterface__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26309:2: rule__PhysicalNetworkInterface__Group__7__Impl rule__PhysicalNetworkInterface__Group__8
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__7__Impl_in_rule__PhysicalNetworkInterface__Group__752080);
+            rule__PhysicalNetworkInterface__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__8_in_rule__PhysicalNetworkInterface__Group__752083);
+            rule__PhysicalNetworkInterface__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__7"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26316:1: rule__PhysicalNetworkInterface__Group__7__Impl : ( ( rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_7 ) ) ;
+    public final void rule__PhysicalNetworkInterface__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26320:1: ( ( ( rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_7 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26321:1: ( ( rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_7 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26321:1: ( ( rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_7 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26322:1: ( rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_7 )
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackAssignment_7()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26323:1: ( rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26323:2: rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_7
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_7_in_rule__PhysicalNetworkInterface__Group__7__Impl52110);
+            rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_7();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackAssignment_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__7__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26333:1: rule__PhysicalNetworkInterface__Group__8 : rule__PhysicalNetworkInterface__Group__8__Impl rule__PhysicalNetworkInterface__Group__9 ;
+    public final void rule__PhysicalNetworkInterface__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26337:1: ( rule__PhysicalNetworkInterface__Group__8__Impl rule__PhysicalNetworkInterface__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26338:2: rule__PhysicalNetworkInterface__Group__8__Impl rule__PhysicalNetworkInterface__Group__9
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__8__Impl_in_rule__PhysicalNetworkInterface__Group__852140);
+            rule__PhysicalNetworkInterface__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__9_in_rule__PhysicalNetworkInterface__Group__852143);
+            rule__PhysicalNetworkInterface__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__8"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26345:1: rule__PhysicalNetworkInterface__Group__8__Impl : ( ( rule__PhysicalNetworkInterface__Group_8__0 )? ) ;
+    public final void rule__PhysicalNetworkInterface__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26349:1: ( ( ( rule__PhysicalNetworkInterface__Group_8__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26350:1: ( ( rule__PhysicalNetworkInterface__Group_8__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26350:1: ( ( rule__PhysicalNetworkInterface__Group_8__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26351:1: ( rule__PhysicalNetworkInterface__Group_8__0 )?
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_8()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26352:1: ( rule__PhysicalNetworkInterface__Group_8__0 )?
+            int alt132=2;
+            int LA132_0 = input.LA(1);
+
+            if ( (LA132_0==106) ) {
+                alt132=1;
+            }
+            switch (alt132) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26352:2: rule__PhysicalNetworkInterface__Group_8__0
+                    {
+                    pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_8__0_in_rule__PhysicalNetworkInterface__Group__8__Impl52170);
+                    rule__PhysicalNetworkInterface__Group_8__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__8__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26362:1: rule__PhysicalNetworkInterface__Group__9 : rule__PhysicalNetworkInterface__Group__9__Impl rule__PhysicalNetworkInterface__Group__10 ;
+    public final void rule__PhysicalNetworkInterface__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26366:1: ( rule__PhysicalNetworkInterface__Group__9__Impl rule__PhysicalNetworkInterface__Group__10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26367:2: rule__PhysicalNetworkInterface__Group__9__Impl rule__PhysicalNetworkInterface__Group__10
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__9__Impl_in_rule__PhysicalNetworkInterface__Group__952201);
+            rule__PhysicalNetworkInterface__Group__9__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__10_in_rule__PhysicalNetworkInterface__Group__952204);
+            rule__PhysicalNetworkInterface__Group__10();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__9"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26374:1: rule__PhysicalNetworkInterface__Group__9__Impl : ( 'performance' ) ;
+    public final void rule__PhysicalNetworkInterface__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26378:1: ( ( 'performance' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26379:1: ( 'performance' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26379:1: ( 'performance' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26380:1: 'performance'
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getPerformanceKeyword_9()); 
+            match(input,122,FollowSets002.FOLLOW_122_in_rule__PhysicalNetworkInterface__Group__9__Impl52232); 
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getPerformanceKeyword_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__9__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26393:1: rule__PhysicalNetworkInterface__Group__10 : rule__PhysicalNetworkInterface__Group__10__Impl rule__PhysicalNetworkInterface__Group__11 ;
+    public final void rule__PhysicalNetworkInterface__Group__10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26397:1: ( rule__PhysicalNetworkInterface__Group__10__Impl rule__PhysicalNetworkInterface__Group__11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26398:2: rule__PhysicalNetworkInterface__Group__10__Impl rule__PhysicalNetworkInterface__Group__11
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__10__Impl_in_rule__PhysicalNetworkInterface__Group__1052263);
+            rule__PhysicalNetworkInterface__Group__10__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__11_in_rule__PhysicalNetworkInterface__Group__1052266);
+            rule__PhysicalNetworkInterface__Group__11();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__10"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__10__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26405:1: rule__PhysicalNetworkInterface__Group__10__Impl : ( ( rule__PhysicalNetworkInterface__PerformanceAssignment_10 ) ) ;
+    public final void rule__PhysicalNetworkInterface__Group__10__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26409:1: ( ( ( rule__PhysicalNetworkInterface__PerformanceAssignment_10 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26410:1: ( ( rule__PhysicalNetworkInterface__PerformanceAssignment_10 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26410:1: ( ( rule__PhysicalNetworkInterface__PerformanceAssignment_10 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26411:1: ( rule__PhysicalNetworkInterface__PerformanceAssignment_10 )
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getPerformanceAssignment_10()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26412:1: ( rule__PhysicalNetworkInterface__PerformanceAssignment_10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26412:2: rule__PhysicalNetworkInterface__PerformanceAssignment_10
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__PerformanceAssignment_10_in_rule__PhysicalNetworkInterface__Group__10__Impl52293);
+            rule__PhysicalNetworkInterface__PerformanceAssignment_10();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getPerformanceAssignment_10()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__10__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26422:1: rule__PhysicalNetworkInterface__Group__11 : rule__PhysicalNetworkInterface__Group__11__Impl ;
+    public final void rule__PhysicalNetworkInterface__Group__11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26426:1: ( rule__PhysicalNetworkInterface__Group__11__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26427:2: rule__PhysicalNetworkInterface__Group__11__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group__11__Impl_in_rule__PhysicalNetworkInterface__Group__1152323);
+            rule__PhysicalNetworkInterface__Group__11__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__11"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group__11__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26433:1: rule__PhysicalNetworkInterface__Group__11__Impl : ( '}' ) ;
+    public final void rule__PhysicalNetworkInterface__Group__11__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26437:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26438:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26438:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26439:1: '}'
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getRightCurlyBracketKeyword_11()); 
+            match(input,29,FollowSets002.FOLLOW_29_in_rule__PhysicalNetworkInterface__Group__11__Impl52351); 
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getRightCurlyBracketKeyword_11()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group__11__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_5__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26476:1: rule__PhysicalNetworkInterface__Group_5__0 : rule__PhysicalNetworkInterface__Group_5__0__Impl rule__PhysicalNetworkInterface__Group_5__1 ;
+    public final void rule__PhysicalNetworkInterface__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26480:1: ( rule__PhysicalNetworkInterface__Group_5__0__Impl rule__PhysicalNetworkInterface__Group_5__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26481:2: rule__PhysicalNetworkInterface__Group_5__0__Impl rule__PhysicalNetworkInterface__Group_5__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_5__0__Impl_in_rule__PhysicalNetworkInterface__Group_5__052406);
+            rule__PhysicalNetworkInterface__Group_5__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_5__1_in_rule__PhysicalNetworkInterface__Group_5__052409);
+            rule__PhysicalNetworkInterface__Group_5__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_5__0"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_5__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26488:1: rule__PhysicalNetworkInterface__Group_5__0__Impl : ( 'alternativeNames' ) ;
+    public final void rule__PhysicalNetworkInterface__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26492:1: ( ( 'alternativeNames' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26493:1: ( 'alternativeNames' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26493:1: ( 'alternativeNames' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26494:1: 'alternativeNames'
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesKeyword_5_0()); 
+            match(input,67,FollowSets002.FOLLOW_67_in_rule__PhysicalNetworkInterface__Group_5__0__Impl52437); 
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesKeyword_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_5__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26507:1: rule__PhysicalNetworkInterface__Group_5__1 : rule__PhysicalNetworkInterface__Group_5__1__Impl rule__PhysicalNetworkInterface__Group_5__2 ;
+    public final void rule__PhysicalNetworkInterface__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26511:1: ( rule__PhysicalNetworkInterface__Group_5__1__Impl rule__PhysicalNetworkInterface__Group_5__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26512:2: rule__PhysicalNetworkInterface__Group_5__1__Impl rule__PhysicalNetworkInterface__Group_5__2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_5__1__Impl_in_rule__PhysicalNetworkInterface__Group_5__152468);
+            rule__PhysicalNetworkInterface__Group_5__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_5__2_in_rule__PhysicalNetworkInterface__Group_5__152471);
+            rule__PhysicalNetworkInterface__Group_5__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_5__1"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_5__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26519:1: rule__PhysicalNetworkInterface__Group_5__1__Impl : ( '{' ) ;
+    public final void rule__PhysicalNetworkInterface__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26523:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26524:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26524:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26525:1: '{'
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getLeftCurlyBracketKeyword_5_1()); 
+            match(input,23,FollowSets002.FOLLOW_23_in_rule__PhysicalNetworkInterface__Group_5__1__Impl52499); 
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getLeftCurlyBracketKeyword_5_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_5__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26538:1: rule__PhysicalNetworkInterface__Group_5__2 : rule__PhysicalNetworkInterface__Group_5__2__Impl rule__PhysicalNetworkInterface__Group_5__3 ;
+    public final void rule__PhysicalNetworkInterface__Group_5__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26542:1: ( rule__PhysicalNetworkInterface__Group_5__2__Impl rule__PhysicalNetworkInterface__Group_5__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26543:2: rule__PhysicalNetworkInterface__Group_5__2__Impl rule__PhysicalNetworkInterface__Group_5__3
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_5__2__Impl_in_rule__PhysicalNetworkInterface__Group_5__252530);
+            rule__PhysicalNetworkInterface__Group_5__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_5__3_in_rule__PhysicalNetworkInterface__Group_5__252533);
+            rule__PhysicalNetworkInterface__Group_5__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_5__2"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_5__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26550:1: rule__PhysicalNetworkInterface__Group_5__2__Impl : ( ( rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_2 ) ) ;
+    public final void rule__PhysicalNetworkInterface__Group_5__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26554:1: ( ( ( rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26555:1: ( ( rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26555:1: ( ( rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26556:1: ( rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_2 )
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesAssignment_5_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26557:1: ( rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26557:2: rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_2_in_rule__PhysicalNetworkInterface__Group_5__2__Impl52560);
+            rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesAssignment_5_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_5__2__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_5__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26567:1: rule__PhysicalNetworkInterface__Group_5__3 : rule__PhysicalNetworkInterface__Group_5__3__Impl rule__PhysicalNetworkInterface__Group_5__4 ;
+    public final void rule__PhysicalNetworkInterface__Group_5__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26571:1: ( rule__PhysicalNetworkInterface__Group_5__3__Impl rule__PhysicalNetworkInterface__Group_5__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26572:2: rule__PhysicalNetworkInterface__Group_5__3__Impl rule__PhysicalNetworkInterface__Group_5__4
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_5__3__Impl_in_rule__PhysicalNetworkInterface__Group_5__352590);
+            rule__PhysicalNetworkInterface__Group_5__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_5__4_in_rule__PhysicalNetworkInterface__Group_5__352593);
+            rule__PhysicalNetworkInterface__Group_5__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_5__3"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_5__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26579:1: rule__PhysicalNetworkInterface__Group_5__3__Impl : ( ( rule__PhysicalNetworkInterface__Group_5_3__0 )* ) ;
+    public final void rule__PhysicalNetworkInterface__Group_5__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26583:1: ( ( ( rule__PhysicalNetworkInterface__Group_5_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26584:1: ( ( rule__PhysicalNetworkInterface__Group_5_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26584:1: ( ( rule__PhysicalNetworkInterface__Group_5_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26585:1: ( rule__PhysicalNetworkInterface__Group_5_3__0 )*
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_5_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26586:1: ( rule__PhysicalNetworkInterface__Group_5_3__0 )*
+            loop133:
+            do {
+                int alt133=2;
+                int LA133_0 = input.LA(1);
+
+                if ( (LA133_0==31) ) {
+                    alt133=1;
+                }
+
+
+                switch (alt133) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26586:2: rule__PhysicalNetworkInterface__Group_5_3__0
+            	    {
+            	    pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_5_3__0_in_rule__PhysicalNetworkInterface__Group_5__3__Impl52620);
+            	    rule__PhysicalNetworkInterface__Group_5_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop133;
+                }
+            } while (true);
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_5_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_5__3__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_5__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26596:1: rule__PhysicalNetworkInterface__Group_5__4 : rule__PhysicalNetworkInterface__Group_5__4__Impl ;
+    public final void rule__PhysicalNetworkInterface__Group_5__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26600:1: ( rule__PhysicalNetworkInterface__Group_5__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26601:2: rule__PhysicalNetworkInterface__Group_5__4__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_5__4__Impl_in_rule__PhysicalNetworkInterface__Group_5__452651);
+            rule__PhysicalNetworkInterface__Group_5__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_5__4"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_5__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26607:1: rule__PhysicalNetworkInterface__Group_5__4__Impl : ( '}' ) ;
+    public final void rule__PhysicalNetworkInterface__Group_5__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26611:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26612:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26612:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26613:1: '}'
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getRightCurlyBracketKeyword_5_4()); 
+            match(input,29,FollowSets002.FOLLOW_29_in_rule__PhysicalNetworkInterface__Group_5__4__Impl52679); 
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getRightCurlyBracketKeyword_5_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_5__4__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_5_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26636:1: rule__PhysicalNetworkInterface__Group_5_3__0 : rule__PhysicalNetworkInterface__Group_5_3__0__Impl rule__PhysicalNetworkInterface__Group_5_3__1 ;
+    public final void rule__PhysicalNetworkInterface__Group_5_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26640:1: ( rule__PhysicalNetworkInterface__Group_5_3__0__Impl rule__PhysicalNetworkInterface__Group_5_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26641:2: rule__PhysicalNetworkInterface__Group_5_3__0__Impl rule__PhysicalNetworkInterface__Group_5_3__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_5_3__0__Impl_in_rule__PhysicalNetworkInterface__Group_5_3__052720);
+            rule__PhysicalNetworkInterface__Group_5_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_5_3__1_in_rule__PhysicalNetworkInterface__Group_5_3__052723);
+            rule__PhysicalNetworkInterface__Group_5_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_5_3__0"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_5_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26648:1: rule__PhysicalNetworkInterface__Group_5_3__0__Impl : ( ',' ) ;
+    public final void rule__PhysicalNetworkInterface__Group_5_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26652:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26653:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26653:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26654:1: ','
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getCommaKeyword_5_3_0()); 
+            match(input,31,FollowSets002.FOLLOW_31_in_rule__PhysicalNetworkInterface__Group_5_3__0__Impl52751); 
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getCommaKeyword_5_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_5_3__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_5_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26667:1: rule__PhysicalNetworkInterface__Group_5_3__1 : rule__PhysicalNetworkInterface__Group_5_3__1__Impl ;
+    public final void rule__PhysicalNetworkInterface__Group_5_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26671:1: ( rule__PhysicalNetworkInterface__Group_5_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26672:2: rule__PhysicalNetworkInterface__Group_5_3__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_5_3__1__Impl_in_rule__PhysicalNetworkInterface__Group_5_3__152782);
+            rule__PhysicalNetworkInterface__Group_5_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_5_3__1"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_5_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26678:1: rule__PhysicalNetworkInterface__Group_5_3__1__Impl : ( ( rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_1 ) ) ;
+    public final void rule__PhysicalNetworkInterface__Group_5_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26682:1: ( ( ( rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26683:1: ( ( rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26683:1: ( ( rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26684:1: ( rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_1 )
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesAssignment_5_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26685:1: ( rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26685:2: rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_1_in_rule__PhysicalNetworkInterface__Group_5_3__1__Impl52809);
+            rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesAssignment_5_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_5_3__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_8__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26699:1: rule__PhysicalNetworkInterface__Group_8__0 : rule__PhysicalNetworkInterface__Group_8__0__Impl rule__PhysicalNetworkInterface__Group_8__1 ;
+    public final void rule__PhysicalNetworkInterface__Group_8__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26703:1: ( rule__PhysicalNetworkInterface__Group_8__0__Impl rule__PhysicalNetworkInterface__Group_8__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26704:2: rule__PhysicalNetworkInterface__Group_8__0__Impl rule__PhysicalNetworkInterface__Group_8__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_8__0__Impl_in_rule__PhysicalNetworkInterface__Group_8__052843);
+            rule__PhysicalNetworkInterface__Group_8__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_8__1_in_rule__PhysicalNetworkInterface__Group_8__052846);
+            rule__PhysicalNetworkInterface__Group_8__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_8__0"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_8__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26711:1: rule__PhysicalNetworkInterface__Group_8__0__Impl : ( 'addresses' ) ;
+    public final void rule__PhysicalNetworkInterface__Group_8__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26715:1: ( ( 'addresses' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26716:1: ( 'addresses' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26716:1: ( 'addresses' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26717:1: 'addresses'
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesKeyword_8_0()); 
+            match(input,106,FollowSets002.FOLLOW_106_in_rule__PhysicalNetworkInterface__Group_8__0__Impl52874); 
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesKeyword_8_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_8__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_8__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26730:1: rule__PhysicalNetworkInterface__Group_8__1 : rule__PhysicalNetworkInterface__Group_8__1__Impl rule__PhysicalNetworkInterface__Group_8__2 ;
+    public final void rule__PhysicalNetworkInterface__Group_8__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26734:1: ( rule__PhysicalNetworkInterface__Group_8__1__Impl rule__PhysicalNetworkInterface__Group_8__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26735:2: rule__PhysicalNetworkInterface__Group_8__1__Impl rule__PhysicalNetworkInterface__Group_8__2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_8__1__Impl_in_rule__PhysicalNetworkInterface__Group_8__152905);
+            rule__PhysicalNetworkInterface__Group_8__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_8__2_in_rule__PhysicalNetworkInterface__Group_8__152908);
+            rule__PhysicalNetworkInterface__Group_8__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_8__1"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_8__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26742:1: rule__PhysicalNetworkInterface__Group_8__1__Impl : ( '{' ) ;
+    public final void rule__PhysicalNetworkInterface__Group_8__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26746:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26747:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26747:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26748:1: '{'
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getLeftCurlyBracketKeyword_8_1()); 
+            match(input,23,FollowSets002.FOLLOW_23_in_rule__PhysicalNetworkInterface__Group_8__1__Impl52936); 
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getLeftCurlyBracketKeyword_8_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_8__1__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_8__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26761:1: rule__PhysicalNetworkInterface__Group_8__2 : rule__PhysicalNetworkInterface__Group_8__2__Impl rule__PhysicalNetworkInterface__Group_8__3 ;
+    public final void rule__PhysicalNetworkInterface__Group_8__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26765:1: ( rule__PhysicalNetworkInterface__Group_8__2__Impl rule__PhysicalNetworkInterface__Group_8__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26766:2: rule__PhysicalNetworkInterface__Group_8__2__Impl rule__PhysicalNetworkInterface__Group_8__3
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_8__2__Impl_in_rule__PhysicalNetworkInterface__Group_8__252967);
+            rule__PhysicalNetworkInterface__Group_8__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_8__3_in_rule__PhysicalNetworkInterface__Group_8__252970);
+            rule__PhysicalNetworkInterface__Group_8__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_8__2"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_8__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26773:1: rule__PhysicalNetworkInterface__Group_8__2__Impl : ( ( rule__PhysicalNetworkInterface__AddressesAssignment_8_2 ) ) ;
+    public final void rule__PhysicalNetworkInterface__Group_8__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26777:1: ( ( ( rule__PhysicalNetworkInterface__AddressesAssignment_8_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26778:1: ( ( rule__PhysicalNetworkInterface__AddressesAssignment_8_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26778:1: ( ( rule__PhysicalNetworkInterface__AddressesAssignment_8_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26779:1: ( rule__PhysicalNetworkInterface__AddressesAssignment_8_2 )
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesAssignment_8_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26780:1: ( rule__PhysicalNetworkInterface__AddressesAssignment_8_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26780:2: rule__PhysicalNetworkInterface__AddressesAssignment_8_2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__AddressesAssignment_8_2_in_rule__PhysicalNetworkInterface__Group_8__2__Impl52997);
+            rule__PhysicalNetworkInterface__AddressesAssignment_8_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesAssignment_8_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_8__2__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_8__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26790:1: rule__PhysicalNetworkInterface__Group_8__3 : rule__PhysicalNetworkInterface__Group_8__3__Impl rule__PhysicalNetworkInterface__Group_8__4 ;
+    public final void rule__PhysicalNetworkInterface__Group_8__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26794:1: ( rule__PhysicalNetworkInterface__Group_8__3__Impl rule__PhysicalNetworkInterface__Group_8__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26795:2: rule__PhysicalNetworkInterface__Group_8__3__Impl rule__PhysicalNetworkInterface__Group_8__4
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_8__3__Impl_in_rule__PhysicalNetworkInterface__Group_8__353027);
+            rule__PhysicalNetworkInterface__Group_8__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_8__4_in_rule__PhysicalNetworkInterface__Group_8__353030);
+            rule__PhysicalNetworkInterface__Group_8__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_8__3"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_8__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26802:1: rule__PhysicalNetworkInterface__Group_8__3__Impl : ( ( rule__PhysicalNetworkInterface__Group_8_3__0 )* ) ;
+    public final void rule__PhysicalNetworkInterface__Group_8__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26806:1: ( ( ( rule__PhysicalNetworkInterface__Group_8_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26807:1: ( ( rule__PhysicalNetworkInterface__Group_8_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26807:1: ( ( rule__PhysicalNetworkInterface__Group_8_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26808:1: ( rule__PhysicalNetworkInterface__Group_8_3__0 )*
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_8_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26809:1: ( rule__PhysicalNetworkInterface__Group_8_3__0 )*
+            loop134:
+            do {
+                int alt134=2;
+                int LA134_0 = input.LA(1);
+
+                if ( (LA134_0==31) ) {
+                    alt134=1;
+                }
+
+
+                switch (alt134) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26809:2: rule__PhysicalNetworkInterface__Group_8_3__0
+            	    {
+            	    pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_8_3__0_in_rule__PhysicalNetworkInterface__Group_8__3__Impl53057);
+            	    rule__PhysicalNetworkInterface__Group_8_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop134;
+                }
+            } while (true);
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getGroup_8_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_8__3__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_8__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26819:1: rule__PhysicalNetworkInterface__Group_8__4 : rule__PhysicalNetworkInterface__Group_8__4__Impl ;
+    public final void rule__PhysicalNetworkInterface__Group_8__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26823:1: ( rule__PhysicalNetworkInterface__Group_8__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26824:2: rule__PhysicalNetworkInterface__Group_8__4__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_8__4__Impl_in_rule__PhysicalNetworkInterface__Group_8__453088);
+            rule__PhysicalNetworkInterface__Group_8__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_8__4"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_8__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26830:1: rule__PhysicalNetworkInterface__Group_8__4__Impl : ( '}' ) ;
+    public final void rule__PhysicalNetworkInterface__Group_8__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26834:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26835:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26835:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26836:1: '}'
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getRightCurlyBracketKeyword_8_4()); 
+            match(input,29,FollowSets002.FOLLOW_29_in_rule__PhysicalNetworkInterface__Group_8__4__Impl53116); 
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getRightCurlyBracketKeyword_8_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_8__4__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_8_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26859:1: rule__PhysicalNetworkInterface__Group_8_3__0 : rule__PhysicalNetworkInterface__Group_8_3__0__Impl rule__PhysicalNetworkInterface__Group_8_3__1 ;
+    public final void rule__PhysicalNetworkInterface__Group_8_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26863:1: ( rule__PhysicalNetworkInterface__Group_8_3__0__Impl rule__PhysicalNetworkInterface__Group_8_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26864:2: rule__PhysicalNetworkInterface__Group_8_3__0__Impl rule__PhysicalNetworkInterface__Group_8_3__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_8_3__0__Impl_in_rule__PhysicalNetworkInterface__Group_8_3__053157);
+            rule__PhysicalNetworkInterface__Group_8_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_8_3__1_in_rule__PhysicalNetworkInterface__Group_8_3__053160);
+            rule__PhysicalNetworkInterface__Group_8_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_8_3__0"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_8_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26871:1: rule__PhysicalNetworkInterface__Group_8_3__0__Impl : ( ',' ) ;
+    public final void rule__PhysicalNetworkInterface__Group_8_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26875:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26876:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26876:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26877:1: ','
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getCommaKeyword_8_3_0()); 
+            match(input,31,FollowSets002.FOLLOW_31_in_rule__PhysicalNetworkInterface__Group_8_3__0__Impl53188); 
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getCommaKeyword_8_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_8_3__0__Impl"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_8_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26890:1: rule__PhysicalNetworkInterface__Group_8_3__1 : rule__PhysicalNetworkInterface__Group_8_3__1__Impl ;
+    public final void rule__PhysicalNetworkInterface__Group_8_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26894:1: ( rule__PhysicalNetworkInterface__Group_8_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26895:2: rule__PhysicalNetworkInterface__Group_8_3__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__Group_8_3__1__Impl_in_rule__PhysicalNetworkInterface__Group_8_3__153219);
+            rule__PhysicalNetworkInterface__Group_8_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_8_3__1"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__Group_8_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26901:1: rule__PhysicalNetworkInterface__Group_8_3__1__Impl : ( ( rule__PhysicalNetworkInterface__AddressesAssignment_8_3_1 ) ) ;
+    public final void rule__PhysicalNetworkInterface__Group_8_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26905:1: ( ( ( rule__PhysicalNetworkInterface__AddressesAssignment_8_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26906:1: ( ( rule__PhysicalNetworkInterface__AddressesAssignment_8_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26906:1: ( ( rule__PhysicalNetworkInterface__AddressesAssignment_8_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26907:1: ( rule__PhysicalNetworkInterface__AddressesAssignment_8_3_1 )
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesAssignment_8_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26908:1: ( rule__PhysicalNetworkInterface__AddressesAssignment_8_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26908:2: rule__PhysicalNetworkInterface__AddressesAssignment_8_3_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__PhysicalNetworkInterface__AddressesAssignment_8_3_1_in_rule__PhysicalNetworkInterface__Group_8_3__1__Impl53246);
+            rule__PhysicalNetworkInterface__AddressesAssignment_8_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesAssignment_8_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__Group_8_3__1__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26922:1: rule__VirtualNetworkInterface__Group__0 : rule__VirtualNetworkInterface__Group__0__Impl rule__VirtualNetworkInterface__Group__1 ;
+    public final void rule__VirtualNetworkInterface__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26926:1: ( rule__VirtualNetworkInterface__Group__0__Impl rule__VirtualNetworkInterface__Group__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26927:2: rule__VirtualNetworkInterface__Group__0__Impl rule__VirtualNetworkInterface__Group__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__0__Impl_in_rule__VirtualNetworkInterface__Group__053280);
+            rule__VirtualNetworkInterface__Group__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__1_in_rule__VirtualNetworkInterface__Group__053283);
+            rule__VirtualNetworkInterface__Group__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__0"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26934:1: rule__VirtualNetworkInterface__Group__0__Impl : ( 'VirtualNetworkInterface' ) ;
+    public final void rule__VirtualNetworkInterface__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26938:1: ( ( 'VirtualNetworkInterface' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26939:1: ( 'VirtualNetworkInterface' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26939:1: ( 'VirtualNetworkInterface' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26940:1: 'VirtualNetworkInterface'
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getVirtualNetworkInterfaceKeyword_0()); 
+            match(input,158,FollowSets002.FOLLOW_158_in_rule__VirtualNetworkInterface__Group__0__Impl53311); 
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getVirtualNetworkInterfaceKeyword_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__0__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26953:1: rule__VirtualNetworkInterface__Group__1 : rule__VirtualNetworkInterface__Group__1__Impl rule__VirtualNetworkInterface__Group__2 ;
+    public final void rule__VirtualNetworkInterface__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26957:1: ( rule__VirtualNetworkInterface__Group__1__Impl rule__VirtualNetworkInterface__Group__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26958:2: rule__VirtualNetworkInterface__Group__1__Impl rule__VirtualNetworkInterface__Group__2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__1__Impl_in_rule__VirtualNetworkInterface__Group__153342);
+            rule__VirtualNetworkInterface__Group__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__2_in_rule__VirtualNetworkInterface__Group__153345);
+            rule__VirtualNetworkInterface__Group__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__1"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26965:1: rule__VirtualNetworkInterface__Group__1__Impl : ( ( rule__VirtualNetworkInterface__IdAssignment_1 ) ) ;
+    public final void rule__VirtualNetworkInterface__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26969:1: ( ( ( rule__VirtualNetworkInterface__IdAssignment_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26970:1: ( ( rule__VirtualNetworkInterface__IdAssignment_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26970:1: ( ( rule__VirtualNetworkInterface__IdAssignment_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26971:1: ( rule__VirtualNetworkInterface__IdAssignment_1 )
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getIdAssignment_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26972:1: ( rule__VirtualNetworkInterface__IdAssignment_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26972:2: rule__VirtualNetworkInterface__IdAssignment_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__IdAssignment_1_in_rule__VirtualNetworkInterface__Group__1__Impl53372);
+            rule__VirtualNetworkInterface__IdAssignment_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getIdAssignment_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__1__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26982:1: rule__VirtualNetworkInterface__Group__2 : rule__VirtualNetworkInterface__Group__2__Impl rule__VirtualNetworkInterface__Group__3 ;
+    public final void rule__VirtualNetworkInterface__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26986:1: ( rule__VirtualNetworkInterface__Group__2__Impl rule__VirtualNetworkInterface__Group__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26987:2: rule__VirtualNetworkInterface__Group__2__Impl rule__VirtualNetworkInterface__Group__3
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__2__Impl_in_rule__VirtualNetworkInterface__Group__253402);
+            rule__VirtualNetworkInterface__Group__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__3_in_rule__VirtualNetworkInterface__Group__253405);
+            rule__VirtualNetworkInterface__Group__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__2"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26994:1: rule__VirtualNetworkInterface__Group__2__Impl : ( '{' ) ;
+    public final void rule__VirtualNetworkInterface__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26998:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26999:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:26999:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27000:1: '{'
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getLeftCurlyBracketKeyword_2()); 
+            match(input,23,FollowSets002.FOLLOW_23_in_rule__VirtualNetworkInterface__Group__2__Impl53433); 
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getLeftCurlyBracketKeyword_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__2__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27013:1: rule__VirtualNetworkInterface__Group__3 : rule__VirtualNetworkInterface__Group__3__Impl rule__VirtualNetworkInterface__Group__4 ;
+    public final void rule__VirtualNetworkInterface__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27017:1: ( rule__VirtualNetworkInterface__Group__3__Impl rule__VirtualNetworkInterface__Group__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27018:2: rule__VirtualNetworkInterface__Group__3__Impl rule__VirtualNetworkInterface__Group__4
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__3__Impl_in_rule__VirtualNetworkInterface__Group__353464);
+            rule__VirtualNetworkInterface__Group__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__4_in_rule__VirtualNetworkInterface__Group__353467);
+            rule__VirtualNetworkInterface__Group__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__3"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27025:1: rule__VirtualNetworkInterface__Group__3__Impl : ( 'name' ) ;
+    public final void rule__VirtualNetworkInterface__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27029:1: ( ( 'name' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27030:1: ( 'name' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27030:1: ( 'name' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27031:1: 'name'
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getNameKeyword_3()); 
+            match(input,65,FollowSets002.FOLLOW_65_in_rule__VirtualNetworkInterface__Group__3__Impl53495); 
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getNameKeyword_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__3__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27044:1: rule__VirtualNetworkInterface__Group__4 : rule__VirtualNetworkInterface__Group__4__Impl rule__VirtualNetworkInterface__Group__5 ;
+    public final void rule__VirtualNetworkInterface__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27048:1: ( rule__VirtualNetworkInterface__Group__4__Impl rule__VirtualNetworkInterface__Group__5 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27049:2: rule__VirtualNetworkInterface__Group__4__Impl rule__VirtualNetworkInterface__Group__5
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__4__Impl_in_rule__VirtualNetworkInterface__Group__453526);
+            rule__VirtualNetworkInterface__Group__4__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__5_in_rule__VirtualNetworkInterface__Group__453529);
+            rule__VirtualNetworkInterface__Group__5();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__4"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27056:1: rule__VirtualNetworkInterface__Group__4__Impl : ( ( rule__VirtualNetworkInterface__NameAssignment_4 ) ) ;
+    public final void rule__VirtualNetworkInterface__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27060:1: ( ( ( rule__VirtualNetworkInterface__NameAssignment_4 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27061:1: ( ( rule__VirtualNetworkInterface__NameAssignment_4 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27061:1: ( ( rule__VirtualNetworkInterface__NameAssignment_4 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27062:1: ( rule__VirtualNetworkInterface__NameAssignment_4 )
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getNameAssignment_4()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27063:1: ( rule__VirtualNetworkInterface__NameAssignment_4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27063:2: rule__VirtualNetworkInterface__NameAssignment_4
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__NameAssignment_4_in_rule__VirtualNetworkInterface__Group__4__Impl53556);
+            rule__VirtualNetworkInterface__NameAssignment_4();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getNameAssignment_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__4__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27073:1: rule__VirtualNetworkInterface__Group__5 : rule__VirtualNetworkInterface__Group__5__Impl rule__VirtualNetworkInterface__Group__6 ;
+    public final void rule__VirtualNetworkInterface__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27077:1: ( rule__VirtualNetworkInterface__Group__5__Impl rule__VirtualNetworkInterface__Group__6 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27078:2: rule__VirtualNetworkInterface__Group__5__Impl rule__VirtualNetworkInterface__Group__6
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__5__Impl_in_rule__VirtualNetworkInterface__Group__553586);
+            rule__VirtualNetworkInterface__Group__5__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__6_in_rule__VirtualNetworkInterface__Group__553589);
+            rule__VirtualNetworkInterface__Group__6();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__5"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__5__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27085:1: rule__VirtualNetworkInterface__Group__5__Impl : ( ( rule__VirtualNetworkInterface__Group_5__0 )? ) ;
+    public final void rule__VirtualNetworkInterface__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27089:1: ( ( ( rule__VirtualNetworkInterface__Group_5__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27090:1: ( ( rule__VirtualNetworkInterface__Group_5__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27090:1: ( ( rule__VirtualNetworkInterface__Group_5__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27091:1: ( rule__VirtualNetworkInterface__Group_5__0 )?
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_5()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27092:1: ( rule__VirtualNetworkInterface__Group_5__0 )?
+            int alt135=2;
+            int LA135_0 = input.LA(1);
+
+            if ( (LA135_0==67) ) {
+                alt135=1;
+            }
+            switch (alt135) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27092:2: rule__VirtualNetworkInterface__Group_5__0
+                    {
+                    pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_5__0_in_rule__VirtualNetworkInterface__Group__5__Impl53616);
+                    rule__VirtualNetworkInterface__Group_5__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_5()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__5__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27102:1: rule__VirtualNetworkInterface__Group__6 : rule__VirtualNetworkInterface__Group__6__Impl rule__VirtualNetworkInterface__Group__7 ;
+    public final void rule__VirtualNetworkInterface__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27106:1: ( rule__VirtualNetworkInterface__Group__6__Impl rule__VirtualNetworkInterface__Group__7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27107:2: rule__VirtualNetworkInterface__Group__6__Impl rule__VirtualNetworkInterface__Group__7
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__6__Impl_in_rule__VirtualNetworkInterface__Group__653647);
+            rule__VirtualNetworkInterface__Group__6__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__7_in_rule__VirtualNetworkInterface__Group__653650);
+            rule__VirtualNetworkInterface__Group__7();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__6"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__6__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27114:1: rule__VirtualNetworkInterface__Group__6__Impl : ( 'usedProtocolStack' ) ;
+    public final void rule__VirtualNetworkInterface__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27118:1: ( ( 'usedProtocolStack' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27119:1: ( 'usedProtocolStack' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27119:1: ( 'usedProtocolStack' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27120:1: 'usedProtocolStack'
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackKeyword_6()); 
+            match(input,157,FollowSets002.FOLLOW_157_in_rule__VirtualNetworkInterface__Group__6__Impl53678); 
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackKeyword_6()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__6__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27133:1: rule__VirtualNetworkInterface__Group__7 : rule__VirtualNetworkInterface__Group__7__Impl rule__VirtualNetworkInterface__Group__8 ;
+    public final void rule__VirtualNetworkInterface__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27137:1: ( rule__VirtualNetworkInterface__Group__7__Impl rule__VirtualNetworkInterface__Group__8 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27138:2: rule__VirtualNetworkInterface__Group__7__Impl rule__VirtualNetworkInterface__Group__8
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__7__Impl_in_rule__VirtualNetworkInterface__Group__753709);
+            rule__VirtualNetworkInterface__Group__7__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__8_in_rule__VirtualNetworkInterface__Group__753712);
+            rule__VirtualNetworkInterface__Group__8();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__7"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__7__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27145:1: rule__VirtualNetworkInterface__Group__7__Impl : ( ( rule__VirtualNetworkInterface__UsedProtocolStackAssignment_7 ) ) ;
+    public final void rule__VirtualNetworkInterface__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27149:1: ( ( ( rule__VirtualNetworkInterface__UsedProtocolStackAssignment_7 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27150:1: ( ( rule__VirtualNetworkInterface__UsedProtocolStackAssignment_7 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27150:1: ( ( rule__VirtualNetworkInterface__UsedProtocolStackAssignment_7 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27151:1: ( rule__VirtualNetworkInterface__UsedProtocolStackAssignment_7 )
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackAssignment_7()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27152:1: ( rule__VirtualNetworkInterface__UsedProtocolStackAssignment_7 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27152:2: rule__VirtualNetworkInterface__UsedProtocolStackAssignment_7
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__UsedProtocolStackAssignment_7_in_rule__VirtualNetworkInterface__Group__7__Impl53739);
+            rule__VirtualNetworkInterface__UsedProtocolStackAssignment_7();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackAssignment_7()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__7__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27162:1: rule__VirtualNetworkInterface__Group__8 : rule__VirtualNetworkInterface__Group__8__Impl rule__VirtualNetworkInterface__Group__9 ;
+    public final void rule__VirtualNetworkInterface__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27166:1: ( rule__VirtualNetworkInterface__Group__8__Impl rule__VirtualNetworkInterface__Group__9 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27167:2: rule__VirtualNetworkInterface__Group__8__Impl rule__VirtualNetworkInterface__Group__9
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__8__Impl_in_rule__VirtualNetworkInterface__Group__853769);
+            rule__VirtualNetworkInterface__Group__8__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__9_in_rule__VirtualNetworkInterface__Group__853772);
+            rule__VirtualNetworkInterface__Group__9();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__8"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__8__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27174:1: rule__VirtualNetworkInterface__Group__8__Impl : ( ( rule__VirtualNetworkInterface__Group_8__0 )? ) ;
+    public final void rule__VirtualNetworkInterface__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27178:1: ( ( ( rule__VirtualNetworkInterface__Group_8__0 )? ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27179:1: ( ( rule__VirtualNetworkInterface__Group_8__0 )? )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27179:1: ( ( rule__VirtualNetworkInterface__Group_8__0 )? )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27180:1: ( rule__VirtualNetworkInterface__Group_8__0 )?
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_8()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27181:1: ( rule__VirtualNetworkInterface__Group_8__0 )?
+            int alt136=2;
+            int LA136_0 = input.LA(1);
+
+            if ( (LA136_0==106) ) {
+                alt136=1;
+            }
+            switch (alt136) {
+                case 1 :
+                    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27181:2: rule__VirtualNetworkInterface__Group_8__0
+                    {
+                    pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_8__0_in_rule__VirtualNetworkInterface__Group__8__Impl53799);
+                    rule__VirtualNetworkInterface__Group_8__0();
+
+                    state._fsp--;
+
+
+                    }
+                    break;
+
+            }
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_8()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__8__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27191:1: rule__VirtualNetworkInterface__Group__9 : rule__VirtualNetworkInterface__Group__9__Impl rule__VirtualNetworkInterface__Group__10 ;
+    public final void rule__VirtualNetworkInterface__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27195:1: ( rule__VirtualNetworkInterface__Group__9__Impl rule__VirtualNetworkInterface__Group__10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27196:2: rule__VirtualNetworkInterface__Group__9__Impl rule__VirtualNetworkInterface__Group__10
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__9__Impl_in_rule__VirtualNetworkInterface__Group__953830);
+            rule__VirtualNetworkInterface__Group__9__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__10_in_rule__VirtualNetworkInterface__Group__953833);
+            rule__VirtualNetworkInterface__Group__10();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__9"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__9__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27203:1: rule__VirtualNetworkInterface__Group__9__Impl : ( 'performance' ) ;
+    public final void rule__VirtualNetworkInterface__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27207:1: ( ( 'performance' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27208:1: ( 'performance' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27208:1: ( 'performance' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27209:1: 'performance'
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getPerformanceKeyword_9()); 
+            match(input,122,FollowSets002.FOLLOW_122_in_rule__VirtualNetworkInterface__Group__9__Impl53861); 
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getPerformanceKeyword_9()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__9__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27222:1: rule__VirtualNetworkInterface__Group__10 : rule__VirtualNetworkInterface__Group__10__Impl rule__VirtualNetworkInterface__Group__11 ;
+    public final void rule__VirtualNetworkInterface__Group__10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27226:1: ( rule__VirtualNetworkInterface__Group__10__Impl rule__VirtualNetworkInterface__Group__11 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27227:2: rule__VirtualNetworkInterface__Group__10__Impl rule__VirtualNetworkInterface__Group__11
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__10__Impl_in_rule__VirtualNetworkInterface__Group__1053892);
+            rule__VirtualNetworkInterface__Group__10__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__11_in_rule__VirtualNetworkInterface__Group__1053895);
+            rule__VirtualNetworkInterface__Group__11();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__10"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__10__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27234:1: rule__VirtualNetworkInterface__Group__10__Impl : ( ( rule__VirtualNetworkInterface__PerformanceAssignment_10 ) ) ;
+    public final void rule__VirtualNetworkInterface__Group__10__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27238:1: ( ( ( rule__VirtualNetworkInterface__PerformanceAssignment_10 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27239:1: ( ( rule__VirtualNetworkInterface__PerformanceAssignment_10 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27239:1: ( ( rule__VirtualNetworkInterface__PerformanceAssignment_10 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27240:1: ( rule__VirtualNetworkInterface__PerformanceAssignment_10 )
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getPerformanceAssignment_10()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27241:1: ( rule__VirtualNetworkInterface__PerformanceAssignment_10 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27241:2: rule__VirtualNetworkInterface__PerformanceAssignment_10
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__PerformanceAssignment_10_in_rule__VirtualNetworkInterface__Group__10__Impl53922);
+            rule__VirtualNetworkInterface__PerformanceAssignment_10();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getPerformanceAssignment_10()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__10__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27251:1: rule__VirtualNetworkInterface__Group__11 : rule__VirtualNetworkInterface__Group__11__Impl ;
+    public final void rule__VirtualNetworkInterface__Group__11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27255:1: ( rule__VirtualNetworkInterface__Group__11__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27256:2: rule__VirtualNetworkInterface__Group__11__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group__11__Impl_in_rule__VirtualNetworkInterface__Group__1153952);
+            rule__VirtualNetworkInterface__Group__11__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__11"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group__11__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27262:1: rule__VirtualNetworkInterface__Group__11__Impl : ( '}' ) ;
+    public final void rule__VirtualNetworkInterface__Group__11__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27266:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27267:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27267:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27268:1: '}'
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getRightCurlyBracketKeyword_11()); 
+            match(input,29,FollowSets002.FOLLOW_29_in_rule__VirtualNetworkInterface__Group__11__Impl53980); 
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getRightCurlyBracketKeyword_11()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group__11__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_5__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27305:1: rule__VirtualNetworkInterface__Group_5__0 : rule__VirtualNetworkInterface__Group_5__0__Impl rule__VirtualNetworkInterface__Group_5__1 ;
+    public final void rule__VirtualNetworkInterface__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27309:1: ( rule__VirtualNetworkInterface__Group_5__0__Impl rule__VirtualNetworkInterface__Group_5__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27310:2: rule__VirtualNetworkInterface__Group_5__0__Impl rule__VirtualNetworkInterface__Group_5__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_5__0__Impl_in_rule__VirtualNetworkInterface__Group_5__054035);
+            rule__VirtualNetworkInterface__Group_5__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_5__1_in_rule__VirtualNetworkInterface__Group_5__054038);
+            rule__VirtualNetworkInterface__Group_5__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_5__0"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_5__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27317:1: rule__VirtualNetworkInterface__Group_5__0__Impl : ( 'alternativeNames' ) ;
+    public final void rule__VirtualNetworkInterface__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27321:1: ( ( 'alternativeNames' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27322:1: ( 'alternativeNames' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27322:1: ( 'alternativeNames' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27323:1: 'alternativeNames'
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesKeyword_5_0()); 
+            match(input,67,FollowSets002.FOLLOW_67_in_rule__VirtualNetworkInterface__Group_5__0__Impl54066); 
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesKeyword_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_5__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27336:1: rule__VirtualNetworkInterface__Group_5__1 : rule__VirtualNetworkInterface__Group_5__1__Impl rule__VirtualNetworkInterface__Group_5__2 ;
+    public final void rule__VirtualNetworkInterface__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27340:1: ( rule__VirtualNetworkInterface__Group_5__1__Impl rule__VirtualNetworkInterface__Group_5__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27341:2: rule__VirtualNetworkInterface__Group_5__1__Impl rule__VirtualNetworkInterface__Group_5__2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_5__1__Impl_in_rule__VirtualNetworkInterface__Group_5__154097);
+            rule__VirtualNetworkInterface__Group_5__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_5__2_in_rule__VirtualNetworkInterface__Group_5__154100);
+            rule__VirtualNetworkInterface__Group_5__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_5__1"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_5__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27348:1: rule__VirtualNetworkInterface__Group_5__1__Impl : ( '{' ) ;
+    public final void rule__VirtualNetworkInterface__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27352:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27353:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27353:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27354:1: '{'
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getLeftCurlyBracketKeyword_5_1()); 
+            match(input,23,FollowSets002.FOLLOW_23_in_rule__VirtualNetworkInterface__Group_5__1__Impl54128); 
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getLeftCurlyBracketKeyword_5_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_5__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27367:1: rule__VirtualNetworkInterface__Group_5__2 : rule__VirtualNetworkInterface__Group_5__2__Impl rule__VirtualNetworkInterface__Group_5__3 ;
+    public final void rule__VirtualNetworkInterface__Group_5__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27371:1: ( rule__VirtualNetworkInterface__Group_5__2__Impl rule__VirtualNetworkInterface__Group_5__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27372:2: rule__VirtualNetworkInterface__Group_5__2__Impl rule__VirtualNetworkInterface__Group_5__3
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_5__2__Impl_in_rule__VirtualNetworkInterface__Group_5__254159);
+            rule__VirtualNetworkInterface__Group_5__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_5__3_in_rule__VirtualNetworkInterface__Group_5__254162);
+            rule__VirtualNetworkInterface__Group_5__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_5__2"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_5__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27379:1: rule__VirtualNetworkInterface__Group_5__2__Impl : ( ( rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_2 ) ) ;
+    public final void rule__VirtualNetworkInterface__Group_5__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27383:1: ( ( ( rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27384:1: ( ( rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27384:1: ( ( rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27385:1: ( rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_2 )
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesAssignment_5_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27386:1: ( rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27386:2: rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_2_in_rule__VirtualNetworkInterface__Group_5__2__Impl54189);
+            rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesAssignment_5_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_5__2__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_5__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27396:1: rule__VirtualNetworkInterface__Group_5__3 : rule__VirtualNetworkInterface__Group_5__3__Impl rule__VirtualNetworkInterface__Group_5__4 ;
+    public final void rule__VirtualNetworkInterface__Group_5__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27400:1: ( rule__VirtualNetworkInterface__Group_5__3__Impl rule__VirtualNetworkInterface__Group_5__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27401:2: rule__VirtualNetworkInterface__Group_5__3__Impl rule__VirtualNetworkInterface__Group_5__4
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_5__3__Impl_in_rule__VirtualNetworkInterface__Group_5__354219);
+            rule__VirtualNetworkInterface__Group_5__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_5__4_in_rule__VirtualNetworkInterface__Group_5__354222);
+            rule__VirtualNetworkInterface__Group_5__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_5__3"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_5__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27408:1: rule__VirtualNetworkInterface__Group_5__3__Impl : ( ( rule__VirtualNetworkInterface__Group_5_3__0 )* ) ;
+    public final void rule__VirtualNetworkInterface__Group_5__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27412:1: ( ( ( rule__VirtualNetworkInterface__Group_5_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27413:1: ( ( rule__VirtualNetworkInterface__Group_5_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27413:1: ( ( rule__VirtualNetworkInterface__Group_5_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27414:1: ( rule__VirtualNetworkInterface__Group_5_3__0 )*
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_5_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27415:1: ( rule__VirtualNetworkInterface__Group_5_3__0 )*
+            loop137:
+            do {
+                int alt137=2;
+                int LA137_0 = input.LA(1);
+
+                if ( (LA137_0==31) ) {
+                    alt137=1;
+                }
+
+
+                switch (alt137) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27415:2: rule__VirtualNetworkInterface__Group_5_3__0
+            	    {
+            	    pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_5_3__0_in_rule__VirtualNetworkInterface__Group_5__3__Impl54249);
+            	    rule__VirtualNetworkInterface__Group_5_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop137;
+                }
+            } while (true);
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_5_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_5__3__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_5__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27425:1: rule__VirtualNetworkInterface__Group_5__4 : rule__VirtualNetworkInterface__Group_5__4__Impl ;
+    public final void rule__VirtualNetworkInterface__Group_5__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27429:1: ( rule__VirtualNetworkInterface__Group_5__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27430:2: rule__VirtualNetworkInterface__Group_5__4__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_5__4__Impl_in_rule__VirtualNetworkInterface__Group_5__454280);
+            rule__VirtualNetworkInterface__Group_5__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_5__4"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_5__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27436:1: rule__VirtualNetworkInterface__Group_5__4__Impl : ( '}' ) ;
+    public final void rule__VirtualNetworkInterface__Group_5__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27440:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27441:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27441:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27442:1: '}'
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getRightCurlyBracketKeyword_5_4()); 
+            match(input,29,FollowSets002.FOLLOW_29_in_rule__VirtualNetworkInterface__Group_5__4__Impl54308); 
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getRightCurlyBracketKeyword_5_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_5__4__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_5_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27465:1: rule__VirtualNetworkInterface__Group_5_3__0 : rule__VirtualNetworkInterface__Group_5_3__0__Impl rule__VirtualNetworkInterface__Group_5_3__1 ;
+    public final void rule__VirtualNetworkInterface__Group_5_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27469:1: ( rule__VirtualNetworkInterface__Group_5_3__0__Impl rule__VirtualNetworkInterface__Group_5_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27470:2: rule__VirtualNetworkInterface__Group_5_3__0__Impl rule__VirtualNetworkInterface__Group_5_3__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_5_3__0__Impl_in_rule__VirtualNetworkInterface__Group_5_3__054349);
+            rule__VirtualNetworkInterface__Group_5_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_5_3__1_in_rule__VirtualNetworkInterface__Group_5_3__054352);
+            rule__VirtualNetworkInterface__Group_5_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_5_3__0"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_5_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27477:1: rule__VirtualNetworkInterface__Group_5_3__0__Impl : ( ',' ) ;
+    public final void rule__VirtualNetworkInterface__Group_5_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27481:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27482:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27482:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27483:1: ','
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getCommaKeyword_5_3_0()); 
+            match(input,31,FollowSets002.FOLLOW_31_in_rule__VirtualNetworkInterface__Group_5_3__0__Impl54380); 
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getCommaKeyword_5_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_5_3__0__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_5_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27496:1: rule__VirtualNetworkInterface__Group_5_3__1 : rule__VirtualNetworkInterface__Group_5_3__1__Impl ;
+    public final void rule__VirtualNetworkInterface__Group_5_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27500:1: ( rule__VirtualNetworkInterface__Group_5_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27501:2: rule__VirtualNetworkInterface__Group_5_3__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_5_3__1__Impl_in_rule__VirtualNetworkInterface__Group_5_3__154411);
+            rule__VirtualNetworkInterface__Group_5_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_5_3__1"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_5_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27507:1: rule__VirtualNetworkInterface__Group_5_3__1__Impl : ( ( rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_1 ) ) ;
+    public final void rule__VirtualNetworkInterface__Group_5_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27511:1: ( ( ( rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27512:1: ( ( rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27512:1: ( ( rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27513:1: ( rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_1 )
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesAssignment_5_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27514:1: ( rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27514:2: rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_1_in_rule__VirtualNetworkInterface__Group_5_3__1__Impl54438);
+            rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesAssignment_5_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_5_3__1__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_8__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27528:1: rule__VirtualNetworkInterface__Group_8__0 : rule__VirtualNetworkInterface__Group_8__0__Impl rule__VirtualNetworkInterface__Group_8__1 ;
+    public final void rule__VirtualNetworkInterface__Group_8__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27532:1: ( rule__VirtualNetworkInterface__Group_8__0__Impl rule__VirtualNetworkInterface__Group_8__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27533:2: rule__VirtualNetworkInterface__Group_8__0__Impl rule__VirtualNetworkInterface__Group_8__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_8__0__Impl_in_rule__VirtualNetworkInterface__Group_8__054472);
+            rule__VirtualNetworkInterface__Group_8__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_8__1_in_rule__VirtualNetworkInterface__Group_8__054475);
+            rule__VirtualNetworkInterface__Group_8__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_8__0"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_8__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27540:1: rule__VirtualNetworkInterface__Group_8__0__Impl : ( 'addresses' ) ;
+    public final void rule__VirtualNetworkInterface__Group_8__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27544:1: ( ( 'addresses' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27545:1: ( 'addresses' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27545:1: ( 'addresses' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27546:1: 'addresses'
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesKeyword_8_0()); 
+            match(input,106,FollowSets002.FOLLOW_106_in_rule__VirtualNetworkInterface__Group_8__0__Impl54503); 
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesKeyword_8_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_8__0__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_8__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27559:1: rule__VirtualNetworkInterface__Group_8__1 : rule__VirtualNetworkInterface__Group_8__1__Impl rule__VirtualNetworkInterface__Group_8__2 ;
+    public final void rule__VirtualNetworkInterface__Group_8__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27563:1: ( rule__VirtualNetworkInterface__Group_8__1__Impl rule__VirtualNetworkInterface__Group_8__2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27564:2: rule__VirtualNetworkInterface__Group_8__1__Impl rule__VirtualNetworkInterface__Group_8__2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_8__1__Impl_in_rule__VirtualNetworkInterface__Group_8__154534);
+            rule__VirtualNetworkInterface__Group_8__1__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_8__2_in_rule__VirtualNetworkInterface__Group_8__154537);
+            rule__VirtualNetworkInterface__Group_8__2();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_8__1"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_8__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27571:1: rule__VirtualNetworkInterface__Group_8__1__Impl : ( '{' ) ;
+    public final void rule__VirtualNetworkInterface__Group_8__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27575:1: ( ( '{' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27576:1: ( '{' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27576:1: ( '{' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27577:1: '{'
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getLeftCurlyBracketKeyword_8_1()); 
+            match(input,23,FollowSets002.FOLLOW_23_in_rule__VirtualNetworkInterface__Group_8__1__Impl54565); 
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getLeftCurlyBracketKeyword_8_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_8__1__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_8__2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27590:1: rule__VirtualNetworkInterface__Group_8__2 : rule__VirtualNetworkInterface__Group_8__2__Impl rule__VirtualNetworkInterface__Group_8__3 ;
+    public final void rule__VirtualNetworkInterface__Group_8__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27594:1: ( rule__VirtualNetworkInterface__Group_8__2__Impl rule__VirtualNetworkInterface__Group_8__3 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27595:2: rule__VirtualNetworkInterface__Group_8__2__Impl rule__VirtualNetworkInterface__Group_8__3
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_8__2__Impl_in_rule__VirtualNetworkInterface__Group_8__254596);
+            rule__VirtualNetworkInterface__Group_8__2__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_8__3_in_rule__VirtualNetworkInterface__Group_8__254599);
+            rule__VirtualNetworkInterface__Group_8__3();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_8__2"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_8__2__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27602:1: rule__VirtualNetworkInterface__Group_8__2__Impl : ( ( rule__VirtualNetworkInterface__AddressesAssignment_8_2 ) ) ;
+    public final void rule__VirtualNetworkInterface__Group_8__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27606:1: ( ( ( rule__VirtualNetworkInterface__AddressesAssignment_8_2 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27607:1: ( ( rule__VirtualNetworkInterface__AddressesAssignment_8_2 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27607:1: ( ( rule__VirtualNetworkInterface__AddressesAssignment_8_2 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27608:1: ( rule__VirtualNetworkInterface__AddressesAssignment_8_2 )
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesAssignment_8_2()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27609:1: ( rule__VirtualNetworkInterface__AddressesAssignment_8_2 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27609:2: rule__VirtualNetworkInterface__AddressesAssignment_8_2
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__AddressesAssignment_8_2_in_rule__VirtualNetworkInterface__Group_8__2__Impl54626);
+            rule__VirtualNetworkInterface__AddressesAssignment_8_2();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesAssignment_8_2()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_8__2__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_8__3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27619:1: rule__VirtualNetworkInterface__Group_8__3 : rule__VirtualNetworkInterface__Group_8__3__Impl rule__VirtualNetworkInterface__Group_8__4 ;
+    public final void rule__VirtualNetworkInterface__Group_8__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27623:1: ( rule__VirtualNetworkInterface__Group_8__3__Impl rule__VirtualNetworkInterface__Group_8__4 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27624:2: rule__VirtualNetworkInterface__Group_8__3__Impl rule__VirtualNetworkInterface__Group_8__4
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_8__3__Impl_in_rule__VirtualNetworkInterface__Group_8__354656);
+            rule__VirtualNetworkInterface__Group_8__3__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_8__4_in_rule__VirtualNetworkInterface__Group_8__354659);
+            rule__VirtualNetworkInterface__Group_8__4();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_8__3"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_8__3__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27631:1: rule__VirtualNetworkInterface__Group_8__3__Impl : ( ( rule__VirtualNetworkInterface__Group_8_3__0 )* ) ;
+    public final void rule__VirtualNetworkInterface__Group_8__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27635:1: ( ( ( rule__VirtualNetworkInterface__Group_8_3__0 )* ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27636:1: ( ( rule__VirtualNetworkInterface__Group_8_3__0 )* )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27636:1: ( ( rule__VirtualNetworkInterface__Group_8_3__0 )* )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27637:1: ( rule__VirtualNetworkInterface__Group_8_3__0 )*
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_8_3()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27638:1: ( rule__VirtualNetworkInterface__Group_8_3__0 )*
+            loop138:
+            do {
+                int alt138=2;
+                int LA138_0 = input.LA(1);
+
+                if ( (LA138_0==31) ) {
+                    alt138=1;
+                }
+
+
+                switch (alt138) {
+            	case 1 :
+            	    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27638:2: rule__VirtualNetworkInterface__Group_8_3__0
+            	    {
+            	    pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_8_3__0_in_rule__VirtualNetworkInterface__Group_8__3__Impl54686);
+            	    rule__VirtualNetworkInterface__Group_8_3__0();
+
+            	    state._fsp--;
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop138;
+                }
+            } while (true);
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getGroup_8_3()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_8__3__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_8__4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27648:1: rule__VirtualNetworkInterface__Group_8__4 : rule__VirtualNetworkInterface__Group_8__4__Impl ;
+    public final void rule__VirtualNetworkInterface__Group_8__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27652:1: ( rule__VirtualNetworkInterface__Group_8__4__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27653:2: rule__VirtualNetworkInterface__Group_8__4__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_8__4__Impl_in_rule__VirtualNetworkInterface__Group_8__454717);
+            rule__VirtualNetworkInterface__Group_8__4__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_8__4"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_8__4__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27659:1: rule__VirtualNetworkInterface__Group_8__4__Impl : ( '}' ) ;
+    public final void rule__VirtualNetworkInterface__Group_8__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27663:1: ( ( '}' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27664:1: ( '}' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27664:1: ( '}' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27665:1: '}'
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getRightCurlyBracketKeyword_8_4()); 
+            match(input,29,FollowSets002.FOLLOW_29_in_rule__VirtualNetworkInterface__Group_8__4__Impl54745); 
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getRightCurlyBracketKeyword_8_4()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_8__4__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_8_3__0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27688:1: rule__VirtualNetworkInterface__Group_8_3__0 : rule__VirtualNetworkInterface__Group_8_3__0__Impl rule__VirtualNetworkInterface__Group_8_3__1 ;
+    public final void rule__VirtualNetworkInterface__Group_8_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27692:1: ( rule__VirtualNetworkInterface__Group_8_3__0__Impl rule__VirtualNetworkInterface__Group_8_3__1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27693:2: rule__VirtualNetworkInterface__Group_8_3__0__Impl rule__VirtualNetworkInterface__Group_8_3__1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_8_3__0__Impl_in_rule__VirtualNetworkInterface__Group_8_3__054786);
+            rule__VirtualNetworkInterface__Group_8_3__0__Impl();
+
+            state._fsp--;
+
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_8_3__1_in_rule__VirtualNetworkInterface__Group_8_3__054789);
+            rule__VirtualNetworkInterface__Group_8_3__1();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_8_3__0"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_8_3__0__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27700:1: rule__VirtualNetworkInterface__Group_8_3__0__Impl : ( ',' ) ;
+    public final void rule__VirtualNetworkInterface__Group_8_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27704:1: ( ( ',' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27705:1: ( ',' )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27705:1: ( ',' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27706:1: ','
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getCommaKeyword_8_3_0()); 
+            match(input,31,FollowSets002.FOLLOW_31_in_rule__VirtualNetworkInterface__Group_8_3__0__Impl54817); 
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getCommaKeyword_8_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_8_3__0__Impl"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_8_3__1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27719:1: rule__VirtualNetworkInterface__Group_8_3__1 : rule__VirtualNetworkInterface__Group_8_3__1__Impl ;
+    public final void rule__VirtualNetworkInterface__Group_8_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27723:1: ( rule__VirtualNetworkInterface__Group_8_3__1__Impl )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27724:2: rule__VirtualNetworkInterface__Group_8_3__1__Impl
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__Group_8_3__1__Impl_in_rule__VirtualNetworkInterface__Group_8_3__154848);
+            rule__VirtualNetworkInterface__Group_8_3__1__Impl();
+
+            state._fsp--;
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_8_3__1"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__Group_8_3__1__Impl"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27730:1: rule__VirtualNetworkInterface__Group_8_3__1__Impl : ( ( rule__VirtualNetworkInterface__AddressesAssignment_8_3_1 ) ) ;
+    public final void rule__VirtualNetworkInterface__Group_8_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27734:1: ( ( ( rule__VirtualNetworkInterface__AddressesAssignment_8_3_1 ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27735:1: ( ( rule__VirtualNetworkInterface__AddressesAssignment_8_3_1 ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27735:1: ( ( rule__VirtualNetworkInterface__AddressesAssignment_8_3_1 ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27736:1: ( rule__VirtualNetworkInterface__AddressesAssignment_8_3_1 )
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesAssignment_8_3_1()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27737:1: ( rule__VirtualNetworkInterface__AddressesAssignment_8_3_1 )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27737:2: rule__VirtualNetworkInterface__AddressesAssignment_8_3_1
+            {
+            pushFollow(FollowSets002.FOLLOW_rule__VirtualNetworkInterface__AddressesAssignment_8_3_1_in_rule__VirtualNetworkInterface__Group_8_3__1__Impl54875);
+            rule__VirtualNetworkInterface__AddressesAssignment_8_3_1();
+
+            state._fsp--;
+
+
+            }
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesAssignment_8_3_1()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__Group_8_3__1__Impl"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__DataCenterNameAssignment_3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27752:1: rule__NetworkInfrastructure__DataCenterNameAssignment_3 : ( ruleEString ) ;
+    public final void rule__NetworkInfrastructure__DataCenterNameAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27756:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27757:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27757:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27758:1: ruleEString
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getDataCenterNameEStringParserRuleCall_3_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__NetworkInfrastructure__DataCenterNameAssignment_354914);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkInfrastructureAccess().getDataCenterNameEStringParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__DataCenterNameAssignment_3"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__DataCenterAltNameAssignment_5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27767:1: rule__NetworkInfrastructure__DataCenterAltNameAssignment_5 : ( ruleEString ) ;
+    public final void rule__NetworkInfrastructure__DataCenterAltNameAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27771:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27772:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27772:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27773:1: ruleEString
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getDataCenterAltNameEStringParserRuleCall_5_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__NetworkInfrastructure__DataCenterAltNameAssignment_554945);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkInfrastructureAccess().getDataCenterAltNameEStringParserRuleCall_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__DataCenterAltNameAssignment_5"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__TrafficAssignment_7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27782:1: rule__NetworkInfrastructure__TrafficAssignment_7 : ( ruleNetworkTraffic ) ;
+    public final void rule__NetworkInfrastructure__TrafficAssignment_7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27786:1: ( ( ruleNetworkTraffic ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27787:1: ( ruleNetworkTraffic )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27787:1: ( ruleNetworkTraffic )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27788:1: ruleNetworkTraffic
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getTrafficNetworkTrafficParserRuleCall_7_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleNetworkTraffic_in_rule__NetworkInfrastructure__TrafficAssignment_754976);
+            ruleNetworkTraffic();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkInfrastructureAccess().getTrafficNetworkTrafficParserRuleCall_7_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__TrafficAssignment_7"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__StructureAssignment_9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27797:1: rule__NetworkInfrastructure__StructureAssignment_9 : ( ruleNetworkStructure ) ;
+    public final void rule__NetworkInfrastructure__StructureAssignment_9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27801:1: ( ( ruleNetworkStructure ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27802:1: ( ruleNetworkStructure )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27802:1: ( ruleNetworkStructure )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27803:1: ruleNetworkStructure
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getStructureNetworkStructureParserRuleCall_9_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleNetworkStructure_in_rule__NetworkInfrastructure__StructureAssignment_955007);
+            ruleNetworkStructure();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkInfrastructureAccess().getStructureNetworkStructureParserRuleCall_9_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__StructureAssignment_9"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__ConfigurationAssignment_11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27812:1: rule__NetworkInfrastructure__ConfigurationAssignment_11 : ( ruleNetworkConfiguration ) ;
+    public final void rule__NetworkInfrastructure__ConfigurationAssignment_11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27816:1: ( ( ruleNetworkConfiguration ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27817:1: ( ruleNetworkConfiguration )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27817:1: ( ruleNetworkConfiguration )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27818:1: ruleNetworkConfiguration
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getConfigurationNetworkConfigurationParserRuleCall_11_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleNetworkConfiguration_in_rule__NetworkInfrastructure__ConfigurationAssignment_1155038);
+            ruleNetworkConfiguration();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkInfrastructureAccess().getConfigurationNetworkConfigurationParserRuleCall_11_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__ConfigurationAssignment_11"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__ParamsAssignment_12_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27827:1: rule__NetworkInfrastructure__ParamsAssignment_12_2 : ( ruleExperimentParam ) ;
+    public final void rule__NetworkInfrastructure__ParamsAssignment_12_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27831:1: ( ( ruleExperimentParam ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27832:1: ( ruleExperimentParam )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27832:1: ( ruleExperimentParam )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27833:1: ruleExperimentParam
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getParamsExperimentParamParserRuleCall_12_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleExperimentParam_in_rule__NetworkInfrastructure__ParamsAssignment_12_255069);
+            ruleExperimentParam();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkInfrastructureAccess().getParamsExperimentParamParserRuleCall_12_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__ParamsAssignment_12_2"
+
+
+    // $ANTLR start "rule__NetworkInfrastructure__ParamsAssignment_12_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27842:1: rule__NetworkInfrastructure__ParamsAssignment_12_3_1 : ( ruleExperimentParam ) ;
+    public final void rule__NetworkInfrastructure__ParamsAssignment_12_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27846:1: ( ( ruleExperimentParam ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27847:1: ( ruleExperimentParam )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27847:1: ( ruleExperimentParam )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27848:1: ruleExperimentParam
+            {
+             before(grammarAccess.getNetworkInfrastructureAccess().getParamsExperimentParamParserRuleCall_12_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleExperimentParam_in_rule__NetworkInfrastructure__ParamsAssignment_12_3_155100);
+            ruleExperimentParam();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkInfrastructureAccess().getParamsExperimentParamParserRuleCall_12_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkInfrastructure__ParamsAssignment_12_3_1"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27857:1: rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_4 : ( ruleEBoolean ) ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27861:1: ( ( ruleEBoolean ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27862:1: ( ruleEBoolean )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27862:1: ( ruleEBoolean )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27863:1: ruleEBoolean
+            {
+             before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getIsUpEBooleanParserRuleCall_4_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEBoolean_in_rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_455131);
+            ruleEBoolean();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getIsUpEBooleanParserRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_4"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27872:1: rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6 : ( ruleDependency ) ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27876:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27877:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27877:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27878:1: ruleDependency
+            {
+             before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_6_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_655162);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_6_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27887:1: rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_8 : ( ruleEInt ) ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27891:1: ( ( ruleEInt ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27892:1: ( ruleEInt )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27892:1: ( ruleEInt )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27893:1: ruleEInt
+            {
+             before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getMTUEIntParserRuleCall_8_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEInt_in_rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_855193);
+            ruleEInt();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getMTUEIntParserRuleCall_8_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_8"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27902:1: rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10 : ( ruleSpeedUnit ) ;
+    public final void rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27906:1: ( ( ruleSpeedUnit ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27907:1: ( ruleSpeedUnit )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27907:1: ( ruleSpeedUnit )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27908:1: ruleSpeedUnit
+            {
+             before(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getInterfaceSpeedSpeedUnitParserRuleCall_10_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleSpeedUnit_in_rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_1055224);
+            ruleSpeedUnit();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNetworkInterfacePerfSpecAccess().getInterfaceSpeedSpeedUnitParserRuleCall_10_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27917:1: rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_4 : ( ruleEBoolean ) ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27921:1: ( ( ruleEBoolean ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27922:1: ( ruleEBoolean )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27922:1: ( ruleEBoolean )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27923:1: ruleEBoolean
+            {
+             before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getIsUpEBooleanParserRuleCall_4_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEBoolean_in_rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_455255);
+            ruleEBoolean();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getIsUpEBooleanParserRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_4"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27932:1: rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6 : ( ruleDependency ) ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27936:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27937:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27937:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27938:1: ruleDependency
+            {
+             before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_6_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_655286);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_6_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27947:1: rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_8 : ( ruleEInt ) ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27951:1: ( ( ruleEInt ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27952:1: ( ruleEInt )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27952:1: ( ruleEInt )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27953:1: ruleEInt
+            {
+             before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getMTUEIntParserRuleCall_8_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEInt_in_rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_855317);
+            ruleEInt();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getMTUEIntParserRuleCall_8_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_8"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27962:1: rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10 : ( ruleSpeedUnit ) ;
+    public final void rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27966:1: ( ( ruleSpeedUnit ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27967:1: ( ruleSpeedUnit )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27967:1: ( ruleSpeedUnit )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27968:1: ruleSpeedUnit
+            {
+             before(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getInterfaceSpeedSpeedUnitParserRuleCall_10_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleSpeedUnit_in_rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_1055348);
+            ruleSpeedUnit();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNetworkInterfacePerfSpecAccess().getInterfaceSpeedSpeedUnitParserRuleCall_10_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__PropagationDelayAssignment_4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27977:1: rule__VirtualLinkPerfSpec__PropagationDelayAssignment_4 : ( ruleDependency ) ;
+    public final void rule__VirtualLinkPerfSpec__PropagationDelayAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27981:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27982:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27982:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27983:1: ruleDependency
+            {
+             before(grammarAccess.getVirtualLinkPerfSpecAccess().getPropagationDelayDependencyParserRuleCall_4_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__VirtualLinkPerfSpec__PropagationDelayAssignment_455379);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualLinkPerfSpecAccess().getPropagationDelayDependencyParserRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__PropagationDelayAssignment_4"
+
+
+    // $ANTLR start "rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27992:1: rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1 : ( ruleDependency ) ;
+    public final void rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27996:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27997:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27997:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:27998:1: ruleDependency
+            {
+             before(grammarAccess.getVirtualLinkPerfSpecAccess().getMaxSupportedBandwidthDependencyParserRuleCall_5_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_155410);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualLinkPerfSpecAccess().getMaxSupportedBandwidthDependencyParserRuleCall_5_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28007:1: rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_4 : ( ruleDependency ) ;
+    public final void rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28011:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28012:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28012:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28013:1: ruleDependency
+            {
+             before(grammarAccess.getPhysicalLinkPerfSpecAccess().getPropagationDelayDependencyParserRuleCall_4_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_455441);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalLinkPerfSpecAccess().getPropagationDelayDependencyParserRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_4"
+
+
+    // $ANTLR start "rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28022:1: rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1 : ( ruleDependency ) ;
+    public final void rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28026:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28027:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28027:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28028:1: ruleDependency
+            {
+             before(grammarAccess.getPhysicalLinkPerfSpecAccess().getMaxSupportedBandwidthDependencyParserRuleCall_5_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_155472);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalLinkPerfSpecAccess().getMaxSupportedBandwidthDependencyParserRuleCall_5_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1"
+
+
+    // $ANTLR start "rule__IntermediateNodePerfSpec__DataplaneAssignment_3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28037:1: rule__IntermediateNodePerfSpec__DataplaneAssignment_3 : ( ruleDataPlanePerfSpec ) ;
+    public final void rule__IntermediateNodePerfSpec__DataplaneAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28041:1: ( ( ruleDataPlanePerfSpec ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28042:1: ( ruleDataPlanePerfSpec )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28042:1: ( ruleDataPlanePerfSpec )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28043:1: ruleDataPlanePerfSpec
+            {
+             before(grammarAccess.getIntermediateNodePerfSpecAccess().getDataplaneDataPlanePerfSpecParserRuleCall_3_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDataPlanePerfSpec_in_rule__IntermediateNodePerfSpec__DataplaneAssignment_355503);
+            ruleDataPlanePerfSpec();
+
+            state._fsp--;
+
+             after(grammarAccess.getIntermediateNodePerfSpecAccess().getDataplaneDataPlanePerfSpecParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntermediateNodePerfSpec__DataplaneAssignment_3"
+
+
+    // $ANTLR start "rule__IntermediateNodePerfSpec__ControlplaneAssignment_5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28052:1: rule__IntermediateNodePerfSpec__ControlplaneAssignment_5 : ( ruleControlPlanePerfSpec ) ;
+    public final void rule__IntermediateNodePerfSpec__ControlplaneAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28056:1: ( ( ruleControlPlanePerfSpec ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28057:1: ( ruleControlPlanePerfSpec )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28057:1: ( ruleControlPlanePerfSpec )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28058:1: ruleControlPlanePerfSpec
+            {
+             before(grammarAccess.getIntermediateNodePerfSpecAccess().getControlplaneControlPlanePerfSpecParserRuleCall_5_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleControlPlanePerfSpec_in_rule__IntermediateNodePerfSpec__ControlplaneAssignment_555534);
+            ruleControlPlanePerfSpec();
+
+            state._fsp--;
+
+             after(grammarAccess.getIntermediateNodePerfSpecAccess().getControlplaneControlPlanePerfSpecParserRuleCall_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__IntermediateNodePerfSpec__ControlplaneAssignment_5"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28067:1: rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_3 : ( ruleDependency ) ;
+    public final void rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28071:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28072:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28072:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28073:1: ruleDependency
+            {
+             before(grammarAccess.getControlPlanePerfSpecAccess().getProcessingLatencyDependencyParserRuleCall_3_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_355565);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getControlPlanePerfSpecAccess().getProcessingLatencyDependencyParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_3"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28082:1: rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_5 : ( ruleDependency ) ;
+    public final void rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28086:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28087:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28087:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28088:1: ruleDependency
+            {
+             before(grammarAccess.getControlPlanePerfSpecAccess().getProcessingBandwidthReqPSDependencyParserRuleCall_5_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_555596);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getControlPlanePerfSpecAccess().getProcessingBandwidthReqPSDependencyParserRuleCall_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_5"
+
+
+    // $ANTLR start "rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28097:1: rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_7 : ( ruleDependency ) ;
+    public final void rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28101:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28102:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28102:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28103:1: ruleDependency
+            {
+             before(grammarAccess.getControlPlanePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_7_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_755627);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getControlPlanePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_7_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_7"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__ForwardingLatencyAssignment_3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28112:1: rule__DataPlanePerfSpec__ForwardingLatencyAssignment_3 : ( ruleDependency ) ;
+    public final void rule__DataPlanePerfSpec__ForwardingLatencyAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28116:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28117:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28117:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28118:1: ruleDependency
+            {
+             before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingLatencyDependencyParserRuleCall_3_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__DataPlanePerfSpec__ForwardingLatencyAssignment_355658);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingLatencyDependencyParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__ForwardingLatencyAssignment_3"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28127:1: rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_5 : ( ruleDependency ) ;
+    public final void rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28131:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28132:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28132:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28133:1: ruleDependency
+            {
+             before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthPPSDependencyParserRuleCall_5_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_555689);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthPPSDependencyParserRuleCall_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_5"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28142:1: rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_7 : ( ruleDependency ) ;
+    public final void rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28146:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28147:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28147:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28148:1: ruleDependency
+            {
+             before(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthBPSDependencyParserRuleCall_7_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_755720);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getDataPlanePerfSpecAccess().getForwardingBandwidthBPSDependencyParserRuleCall_7_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_7"
+
+
+    // $ANTLR start "rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28157:1: rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_9 : ( ruleDependency ) ;
+    public final void rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28161:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28162:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28162:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28163:1: ruleDependency
+            {
+             before(grammarAccess.getDataPlanePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_9_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_955751);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getDataPlanePerfSpecAccess().getPacketProcessingTimeDependencyParserRuleCall_9_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_9"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28172:1: rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_3 : ( ruleDependency ) ;
+    public final void rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28176:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28177:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28177:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28178:1: ruleDependency
+            {
+             before(grammarAccess.getEndNodePerfSpecAccess().getSoftwareLayersDelayDependencyParserRuleCall_3_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_355782);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getEndNodePerfSpecAccess().getSoftwareLayersDelayDependencyParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_3"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__DataplaneAssignment_4_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28187:1: rule__EndNodePerfSpec__DataplaneAssignment_4_1 : ( ruleDataPlanePerfSpec ) ;
+    public final void rule__EndNodePerfSpec__DataplaneAssignment_4_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28191:1: ( ( ruleDataPlanePerfSpec ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28192:1: ( ruleDataPlanePerfSpec )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28192:1: ( ruleDataPlanePerfSpec )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28193:1: ruleDataPlanePerfSpec
+            {
+             before(grammarAccess.getEndNodePerfSpecAccess().getDataplaneDataPlanePerfSpecParserRuleCall_4_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDataPlanePerfSpec_in_rule__EndNodePerfSpec__DataplaneAssignment_4_155813);
+            ruleDataPlanePerfSpec();
+
+            state._fsp--;
+
+             after(grammarAccess.getEndNodePerfSpecAccess().getDataplaneDataPlanePerfSpecParserRuleCall_4_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__DataplaneAssignment_4_1"
+
+
+    // $ANTLR start "rule__EndNodePerfSpec__ControlplaneAssignment_5_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28202:1: rule__EndNodePerfSpec__ControlplaneAssignment_5_1 : ( ruleControlPlanePerfSpec ) ;
+    public final void rule__EndNodePerfSpec__ControlplaneAssignment_5_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28206:1: ( ( ruleControlPlanePerfSpec ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28207:1: ( ruleControlPlanePerfSpec )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28207:1: ( ruleControlPlanePerfSpec )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28208:1: ruleControlPlanePerfSpec
+            {
+             before(grammarAccess.getEndNodePerfSpecAccess().getControlplaneControlPlanePerfSpecParserRuleCall_5_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleControlPlanePerfSpec_in_rule__EndNodePerfSpec__ControlplaneAssignment_5_155844);
+            ruleControlPlanePerfSpec();
+
+            state._fsp--;
+
+             after(grammarAccess.getEndNodePerfSpecAccess().getControlplaneControlPlanePerfSpecParserRuleCall_5_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EndNodePerfSpec__ControlplaneAssignment_5_1"
+
+
+    // $ANTLR start "rule__NetworkTraffic__FlowsAssignment_3_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28217:1: rule__NetworkTraffic__FlowsAssignment_3_2 : ( ruleFlow ) ;
+    public final void rule__NetworkTraffic__FlowsAssignment_3_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28221:1: ( ( ruleFlow ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28222:1: ( ruleFlow )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28222:1: ( ruleFlow )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28223:1: ruleFlow
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getFlowsFlowParserRuleCall_3_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleFlow_in_rule__NetworkTraffic__FlowsAssignment_3_255875);
+            ruleFlow();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkTrafficAccess().getFlowsFlowParserRuleCall_3_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__FlowsAssignment_3_2"
+
+
+    // $ANTLR start "rule__NetworkTraffic__FlowsAssignment_3_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28232:1: rule__NetworkTraffic__FlowsAssignment_3_3_1 : ( ruleFlow ) ;
+    public final void rule__NetworkTraffic__FlowsAssignment_3_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28236:1: ( ( ruleFlow ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28237:1: ( ruleFlow )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28237:1: ( ruleFlow )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28238:1: ruleFlow
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getFlowsFlowParserRuleCall_3_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleFlow_in_rule__NetworkTraffic__FlowsAssignment_3_3_155906);
+            ruleFlow();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkTrafficAccess().getFlowsFlowParserRuleCall_3_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__FlowsAssignment_3_3_1"
+
+
+    // $ANTLR start "rule__NetworkTraffic__SoftwareAssignment_4_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28247:1: rule__NetworkTraffic__SoftwareAssignment_4_2 : ( ruleSoftwareComponent ) ;
+    public final void rule__NetworkTraffic__SoftwareAssignment_4_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28251:1: ( ( ruleSoftwareComponent ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28252:1: ( ruleSoftwareComponent )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28252:1: ( ruleSoftwareComponent )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28253:1: ruleSoftwareComponent
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getSoftwareSoftwareComponentParserRuleCall_4_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleSoftwareComponent_in_rule__NetworkTraffic__SoftwareAssignment_4_255937);
+            ruleSoftwareComponent();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkTrafficAccess().getSoftwareSoftwareComponentParserRuleCall_4_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__SoftwareAssignment_4_2"
+
+
+    // $ANTLR start "rule__NetworkTraffic__SoftwareAssignment_4_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28262:1: rule__NetworkTraffic__SoftwareAssignment_4_3_1 : ( ruleSoftwareComponent ) ;
+    public final void rule__NetworkTraffic__SoftwareAssignment_4_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28266:1: ( ( ruleSoftwareComponent ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28267:1: ( ruleSoftwareComponent )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28267:1: ( ruleSoftwareComponent )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28268:1: ruleSoftwareComponent
+            {
+             before(grammarAccess.getNetworkTrafficAccess().getSoftwareSoftwareComponentParserRuleCall_4_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleSoftwareComponent_in_rule__NetworkTraffic__SoftwareAssignment_4_3_155968);
+            ruleSoftwareComponent();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkTrafficAccess().getSoftwareSoftwareComponentParserRuleCall_4_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkTraffic__SoftwareAssignment_4_3_1"
+
+
+    // $ANTLR start "rule__NetworkStructure__NodesAssignment_3_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28277:1: rule__NetworkStructure__NodesAssignment_3_2 : ( ruleNode ) ;
+    public final void rule__NetworkStructure__NodesAssignment_3_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28281:1: ( ( ruleNode ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28282:1: ( ruleNode )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28282:1: ( ruleNode )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28283:1: ruleNode
+            {
+             before(grammarAccess.getNetworkStructureAccess().getNodesNodeParserRuleCall_3_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleNode_in_rule__NetworkStructure__NodesAssignment_3_255999);
+            ruleNode();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkStructureAccess().getNodesNodeParserRuleCall_3_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__NodesAssignment_3_2"
+
+
+    // $ANTLR start "rule__NetworkStructure__NodesAssignment_3_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28292:1: rule__NetworkStructure__NodesAssignment_3_3_1 : ( ruleNode ) ;
+    public final void rule__NetworkStructure__NodesAssignment_3_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28296:1: ( ( ruleNode ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28297:1: ( ruleNode )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28297:1: ( ruleNode )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28298:1: ruleNode
+            {
+             before(grammarAccess.getNetworkStructureAccess().getNodesNodeParserRuleCall_3_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleNode_in_rule__NetworkStructure__NodesAssignment_3_3_156030);
+            ruleNode();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkStructureAccess().getNodesNodeParserRuleCall_3_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__NodesAssignment_3_3_1"
+
+
+    // $ANTLR start "rule__NetworkStructure__LinksAssignment_4_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28307:1: rule__NetworkStructure__LinksAssignment_4_2 : ( ruleLink ) ;
+    public final void rule__NetworkStructure__LinksAssignment_4_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28311:1: ( ( ruleLink ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28312:1: ( ruleLink )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28312:1: ( ruleLink )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28313:1: ruleLink
+            {
+             before(grammarAccess.getNetworkStructureAccess().getLinksLinkParserRuleCall_4_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleLink_in_rule__NetworkStructure__LinksAssignment_4_256061);
+            ruleLink();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkStructureAccess().getLinksLinkParserRuleCall_4_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__LinksAssignment_4_2"
+
+
+    // $ANTLR start "rule__NetworkStructure__LinksAssignment_4_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28322:1: rule__NetworkStructure__LinksAssignment_4_3_1 : ( ruleLink ) ;
+    public final void rule__NetworkStructure__LinksAssignment_4_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28326:1: ( ( ruleLink ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28327:1: ( ruleLink )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28327:1: ( ruleLink )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28328:1: ruleLink
+            {
+             before(grammarAccess.getNetworkStructureAccess().getLinksLinkParserRuleCall_4_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleLink_in_rule__NetworkStructure__LinksAssignment_4_3_156092);
+            ruleLink();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkStructureAccess().getLinksLinkParserRuleCall_4_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkStructure__LinksAssignment_4_3_1"
+
+
+    // $ANTLR start "rule__NetworkConfiguration__ProtocolsAndStacksAssignment_3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28337:1: rule__NetworkConfiguration__ProtocolsAndStacksAssignment_3 : ( ruleProtocolsRepository ) ;
+    public final void rule__NetworkConfiguration__ProtocolsAndStacksAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28341:1: ( ( ruleProtocolsRepository ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28342:1: ( ruleProtocolsRepository )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28342:1: ( ruleProtocolsRepository )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28343:1: ruleProtocolsRepository
+            {
+             before(grammarAccess.getNetworkConfigurationAccess().getProtocolsAndStacksProtocolsRepositoryParserRuleCall_3_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleProtocolsRepository_in_rule__NetworkConfiguration__ProtocolsAndStacksAssignment_356123);
+            ruleProtocolsRepository();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkConfigurationAccess().getProtocolsAndStacksProtocolsRepositoryParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkConfiguration__ProtocolsAndStacksAssignment_3"
+
+
+    // $ANTLR start "rule__NetworkConfiguration__RoutesAssignment_5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28352:1: rule__NetworkConfiguration__RoutesAssignment_5 : ( ruleRoutesRepository ) ;
+    public final void rule__NetworkConfiguration__RoutesAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28356:1: ( ( ruleRoutesRepository ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28357:1: ( ruleRoutesRepository )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28357:1: ( ruleRoutesRepository )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28358:1: ruleRoutesRepository
+            {
+             before(grammarAccess.getNetworkConfigurationAccess().getRoutesRoutesRepositoryParserRuleCall_5_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleRoutesRepository_in_rule__NetworkConfiguration__RoutesAssignment_556154);
+            ruleRoutesRepository();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkConfigurationAccess().getRoutesRoutesRepositoryParserRuleCall_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkConfiguration__RoutesAssignment_5"
+
+
+    // $ANTLR start "rule__ExperimentParam__NameAssignment_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28367:1: rule__ExperimentParam__NameAssignment_1 : ( ruleEString ) ;
+    public final void rule__ExperimentParam__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28371:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28372:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28372:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28373:1: ruleEString
+            {
+             before(grammarAccess.getExperimentParamAccess().getNameEStringParserRuleCall_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__ExperimentParam__NameAssignment_156185);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getExperimentParamAccess().getNameEStringParserRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExperimentParam__NameAssignment_1"
+
+
+    // $ANTLR start "rule__ExperimentParam__ValueAssignment_4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28382:1: rule__ExperimentParam__ValueAssignment_4 : ( ruleEString ) ;
+    public final void rule__ExperimentParam__ValueAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28386:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28387:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28387:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28388:1: ruleEString
+            {
+             before(grammarAccess.getExperimentParamAccess().getValueEStringParserRuleCall_4_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__ExperimentParam__ValueAssignment_456216);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getExperimentParamAccess().getValueEStringParserRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ExperimentParam__ValueAssignment_4"
+
+
+    // $ANTLR start "rule__SoftwareComponent__IdAssignment_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28397:1: rule__SoftwareComponent__IdAssignment_1 : ( RULE_ID ) ;
+    public final void rule__SoftwareComponent__IdAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28401:1: ( ( RULE_ID ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28402:1: ( RULE_ID )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28402:1: ( RULE_ID )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28403:1: RULE_ID
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getIdIDTerminalRuleCall_1_0()); 
+            match(input,RULE_ID,FollowSets002.FOLLOW_RULE_ID_in_rule__SoftwareComponent__IdAssignment_156247); 
+             after(grammarAccess.getSoftwareComponentAccess().getIdIDTerminalRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__IdAssignment_1"
+
+
+    // $ANTLR start "rule__SoftwareComponent__NameAssignment_4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28412:1: rule__SoftwareComponent__NameAssignment_4 : ( ruleEString ) ;
+    public final void rule__SoftwareComponent__NameAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28416:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28417:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28417:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28418:1: ruleEString
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getNameEStringParserRuleCall_4_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__SoftwareComponent__NameAssignment_456278);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getSoftwareComponentAccess().getNameEStringParserRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__NameAssignment_4"
+
+
+    // $ANTLR start "rule__SoftwareComponent__AlternativeNamesAssignment_5_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28427:1: rule__SoftwareComponent__AlternativeNamesAssignment_5_2 : ( ruleEString ) ;
+    public final void rule__SoftwareComponent__AlternativeNamesAssignment_5_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28431:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28432:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28432:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28433:1: ruleEString
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__SoftwareComponent__AlternativeNamesAssignment_5_256309);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__AlternativeNamesAssignment_5_2"
+
+
+    // $ANTLR start "rule__SoftwareComponent__AlternativeNamesAssignment_5_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28442:1: rule__SoftwareComponent__AlternativeNamesAssignment_5_3_1 : ( ruleEString ) ;
+    public final void rule__SoftwareComponent__AlternativeNamesAssignment_5_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28446:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28447:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28447:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28448:1: ruleEString
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__SoftwareComponent__AlternativeNamesAssignment_5_3_156340);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getSoftwareComponentAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__AlternativeNamesAssignment_5_3_1"
+
+
+    // $ANTLR start "rule__SoftwareComponent__DeployedOnAssignment_7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28457:1: rule__SoftwareComponent__DeployedOnAssignment_7 : ( ( ruleEString ) ) ;
+    public final void rule__SoftwareComponent__DeployedOnAssignment_7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28461:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28462:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28462:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28463:1: ( ruleEString )
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getDeployedOnNodeCrossReference_7_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28464:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28465:1: ruleEString
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getDeployedOnNodeEStringParserRuleCall_7_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__SoftwareComponent__DeployedOnAssignment_756375);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getSoftwareComponentAccess().getDeployedOnNodeEStringParserRuleCall_7_0_1()); 
+
+            }
+
+             after(grammarAccess.getSoftwareComponentAccess().getDeployedOnNodeCrossReference_7_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__DeployedOnAssignment_7"
+
+
+    // $ANTLR start "rule__SoftwareComponent__TrafficSourcesAssignment_8_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28476:1: rule__SoftwareComponent__TrafficSourcesAssignment_8_2 : ( ruleTrafficSource ) ;
+    public final void rule__SoftwareComponent__TrafficSourcesAssignment_8_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28480:1: ( ( ruleTrafficSource ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28481:1: ( ruleTrafficSource )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28481:1: ( ruleTrafficSource )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28482:1: ruleTrafficSource
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesTrafficSourceParserRuleCall_8_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleTrafficSource_in_rule__SoftwareComponent__TrafficSourcesAssignment_8_256410);
+            ruleTrafficSource();
+
+            state._fsp--;
+
+             after(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesTrafficSourceParserRuleCall_8_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__TrafficSourcesAssignment_8_2"
+
+
+    // $ANTLR start "rule__SoftwareComponent__TrafficSourcesAssignment_8_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28491:1: rule__SoftwareComponent__TrafficSourcesAssignment_8_3_1 : ( ruleTrafficSource ) ;
+    public final void rule__SoftwareComponent__TrafficSourcesAssignment_8_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28495:1: ( ( ruleTrafficSource ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28496:1: ( ruleTrafficSource )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28496:1: ( ruleTrafficSource )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28497:1: ruleTrafficSource
+            {
+             before(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesTrafficSourceParserRuleCall_8_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleTrafficSource_in_rule__SoftwareComponent__TrafficSourcesAssignment_8_3_156441);
+            ruleTrafficSource();
+
+            state._fsp--;
+
+             after(grammarAccess.getSoftwareComponentAccess().getTrafficSourcesTrafficSourceParserRuleCall_8_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SoftwareComponent__TrafficSourcesAssignment_8_3_1"
+
+
+    // $ANTLR start "rule__EntityAddress__AddressAssignment_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28506:1: rule__EntityAddress__AddressAssignment_3_1 : ( ruleEString ) ;
+    public final void rule__EntityAddress__AddressAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28510:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28511:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28511:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28512:1: ruleEString
+            {
+             before(grammarAccess.getEntityAddressAccess().getAddressEStringParserRuleCall_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__EntityAddress__AddressAssignment_3_156472);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getEntityAddressAccess().getAddressEStringParserRuleCall_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__AddressAssignment_3_1"
+
+
+    // $ANTLR start "rule__EntityAddress__AddressGivenByAssignment_4_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28521:1: rule__EntityAddress__AddressGivenByAssignment_4_1 : ( ( ruleEString ) ) ;
+    public final void rule__EntityAddress__AddressGivenByAssignment_4_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28525:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28526:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28526:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28527:1: ( ruleEString )
+            {
+             before(grammarAccess.getEntityAddressAccess().getAddressGivenByNetworkProtocolCrossReference_4_1_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28528:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28529:1: ruleEString
+            {
+             before(grammarAccess.getEntityAddressAccess().getAddressGivenByNetworkProtocolEStringParserRuleCall_4_1_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__EntityAddress__AddressGivenByAssignment_4_156507);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getEntityAddressAccess().getAddressGivenByNetworkProtocolEStringParserRuleCall_4_1_0_1()); 
+
+            }
+
+             after(grammarAccess.getEntityAddressAccess().getAddressGivenByNetworkProtocolCrossReference_4_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityAddress__AddressGivenByAssignment_4_1"
+
+
+    // $ANTLR start "rule__ONOFFFlow__StartStateAssignment_0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28540:1: rule__ONOFFFlow__StartStateAssignment_0 : ( ( 'startState' ) ) ;
+    public final void rule__ONOFFFlow__StartStateAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28544:1: ( ( ( 'startState' ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28545:1: ( ( 'startState' ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28545:1: ( ( 'startState' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28546:1: ( 'startState' )
+            {
+             before(grammarAccess.getONOFFFlowAccess().getStartStateStartStateKeyword_0_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28547:1: ( 'startState' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28548:1: 'startState'
+            {
+             before(grammarAccess.getONOFFFlowAccess().getStartStateStartStateKeyword_0_0()); 
+            match(input,159,FollowSets002.FOLLOW_159_in_rule__ONOFFFlow__StartStateAssignment_056547); 
+             after(grammarAccess.getONOFFFlowAccess().getStartStateStartStateKeyword_0_0()); 
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getStartStateStartStateKeyword_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__StartStateAssignment_0"
+
+
+    // $ANTLR start "rule__ONOFFFlow__IdAssignment_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28563:1: rule__ONOFFFlow__IdAssignment_2 : ( RULE_ID ) ;
+    public final void rule__ONOFFFlow__IdAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28567:1: ( ( RULE_ID ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28568:1: ( RULE_ID )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28568:1: ( RULE_ID )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28569:1: RULE_ID
+            {
+             before(grammarAccess.getONOFFFlowAccess().getIdIDTerminalRuleCall_2_0()); 
+            match(input,RULE_ID,FollowSets002.FOLLOW_RULE_ID_in_rule__ONOFFFlow__IdAssignment_256586); 
+             after(grammarAccess.getONOFFFlowAccess().getIdIDTerminalRuleCall_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__IdAssignment_2"
+
+
+    // $ANTLR start "rule__ONOFFFlow__NameAssignment_5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28578:1: rule__ONOFFFlow__NameAssignment_5 : ( ruleEString ) ;
+    public final void rule__ONOFFFlow__NameAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28582:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28583:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28583:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28584:1: ruleEString
+            {
+             before(grammarAccess.getONOFFFlowAccess().getNameEStringParserRuleCall_5_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__ONOFFFlow__NameAssignment_556617);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getONOFFFlowAccess().getNameEStringParserRuleCall_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__NameAssignment_5"
+
+
+    // $ANTLR start "rule__ONOFFFlow__AlternativeNamesAssignment_6_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28593:1: rule__ONOFFFlow__AlternativeNamesAssignment_6_2 : ( ruleEString ) ;
+    public final void rule__ONOFFFlow__AlternativeNamesAssignment_6_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28597:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28598:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28598:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28599:1: ruleEString
+            {
+             before(grammarAccess.getONOFFFlowAccess().getAlternativeNamesEStringParserRuleCall_6_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__ONOFFFlow__AlternativeNamesAssignment_6_256648);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getONOFFFlowAccess().getAlternativeNamesEStringParserRuleCall_6_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__AlternativeNamesAssignment_6_2"
+
+
+    // $ANTLR start "rule__ONOFFFlow__AlternativeNamesAssignment_6_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28608:1: rule__ONOFFFlow__AlternativeNamesAssignment_6_3_1 : ( ruleEString ) ;
+    public final void rule__ONOFFFlow__AlternativeNamesAssignment_6_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28612:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28613:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28613:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28614:1: ruleEString
+            {
+             before(grammarAccess.getONOFFFlowAccess().getAlternativeNamesEStringParserRuleCall_6_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__ONOFFFlow__AlternativeNamesAssignment_6_3_156679);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getONOFFFlowAccess().getAlternativeNamesEStringParserRuleCall_6_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__AlternativeNamesAssignment_6_3_1"
+
+
+    // $ANTLR start "rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28623:1: rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_1 : ( ( ruleEString ) ) ;
+    public final void rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28627:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28628:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28628:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28629:1: ( ruleEString )
+            {
+             before(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentSoftwareComponentCrossReference_7_1_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28630:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28631:1: ruleEString
+            {
+             before(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentSoftwareComponentEStringParserRuleCall_7_1_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_156714);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentSoftwareComponentEStringParserRuleCall_7_1_0_1()); 
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getDestinationSoftwareComponentSoftwareComponentCrossReference_7_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_1"
+
+
+    // $ANTLR start "rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28642:1: rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_1 : ( ( ruleEString ) ) ;
+    public final void rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28646:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28647:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28647:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28648:1: ( ruleEString )
+            {
+             before(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentSoftwareComponentCrossReference_8_1_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28649:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28650:1: ruleEString
+            {
+             before(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentSoftwareComponentEStringParserRuleCall_8_1_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_156753);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentSoftwareComponentEStringParserRuleCall_8_1_0_1()); 
+
+            }
+
+             after(grammarAccess.getONOFFFlowAccess().getSourceSoftwareComponentSoftwareComponentCrossReference_8_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_1"
+
+
+    // $ANTLR start "rule__ONOFFFlow__DestinationAddressesAssignment_9_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28661:1: rule__ONOFFFlow__DestinationAddressesAssignment_9_2 : ( ruleEntityAddress ) ;
+    public final void rule__ONOFFFlow__DestinationAddressesAssignment_9_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28665:1: ( ( ruleEntityAddress ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28666:1: ( ruleEntityAddress )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28666:1: ( ruleEntityAddress )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28667:1: ruleEntityAddress
+            {
+             before(grammarAccess.getONOFFFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_9_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEntityAddress_in_rule__ONOFFFlow__DestinationAddressesAssignment_9_256788);
+            ruleEntityAddress();
+
+            state._fsp--;
+
+             after(grammarAccess.getONOFFFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_9_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__DestinationAddressesAssignment_9_2"
+
+
+    // $ANTLR start "rule__ONOFFFlow__DestinationAddressesAssignment_9_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28676:1: rule__ONOFFFlow__DestinationAddressesAssignment_9_3_1 : ( ruleEntityAddress ) ;
+    public final void rule__ONOFFFlow__DestinationAddressesAssignment_9_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28680:1: ( ( ruleEntityAddress ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28681:1: ( ruleEntityAddress )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28681:1: ( ruleEntityAddress )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28682:1: ruleEntityAddress
+            {
+             before(grammarAccess.getONOFFFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_9_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEntityAddress_in_rule__ONOFFFlow__DestinationAddressesAssignment_9_3_156819);
+            ruleEntityAddress();
+
+            state._fsp--;
+
+             after(grammarAccess.getONOFFFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_9_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__DestinationAddressesAssignment_9_3_1"
+
+
+    // $ANTLR start "rule__ONOFFFlow__ONstateIATAssignment_11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28691:1: rule__ONOFFFlow__ONstateIATAssignment_11 : ( ruleDependency ) ;
+    public final void rule__ONOFFFlow__ONstateIATAssignment_11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28695:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28696:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28696:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28697:1: ruleDependency
+            {
+             before(grammarAccess.getONOFFFlowAccess().getONstateIATDependencyParserRuleCall_11_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__ONOFFFlow__ONstateIATAssignment_1156850);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getONOFFFlowAccess().getONstateIATDependencyParserRuleCall_11_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__ONstateIATAssignment_11"
+
+
+    // $ANTLR start "rule__ONOFFFlow__ONstateDurationAssignment_13"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28706:1: rule__ONOFFFlow__ONstateDurationAssignment_13 : ( ruleDependency ) ;
+    public final void rule__ONOFFFlow__ONstateDurationAssignment_13() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28710:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28711:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28711:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28712:1: ruleDependency
+            {
+             before(grammarAccess.getONOFFFlowAccess().getONstateDurationDependencyParserRuleCall_13_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__ONOFFFlow__ONstateDurationAssignment_1356881);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getONOFFFlowAccess().getONstateDurationDependencyParserRuleCall_13_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__ONstateDurationAssignment_13"
+
+
+    // $ANTLR start "rule__ONOFFFlow__OFFstateDurationAssignment_15"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28721:1: rule__ONOFFFlow__OFFstateDurationAssignment_15 : ( ruleDependency ) ;
+    public final void rule__ONOFFFlow__OFFstateDurationAssignment_15() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28725:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28726:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28726:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28727:1: ruleDependency
+            {
+             before(grammarAccess.getONOFFFlowAccess().getOFFstateDurationDependencyParserRuleCall_15_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__ONOFFFlow__OFFstateDurationAssignment_1556912);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getONOFFFlowAccess().getOFFstateDurationDependencyParserRuleCall_15_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__OFFstateDurationAssignment_15"
+
+
+    // $ANTLR start "rule__ONOFFFlow__PacketLengthAssignment_17"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28736:1: rule__ONOFFFlow__PacketLengthAssignment_17 : ( ruleDependency ) ;
+    public final void rule__ONOFFFlow__PacketLengthAssignment_17() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28740:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28741:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28741:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28742:1: ruleDependency
+            {
+             before(grammarAccess.getONOFFFlowAccess().getPacketLengthDependencyParserRuleCall_17_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__ONOFFFlow__PacketLengthAssignment_1756943);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getONOFFFlowAccess().getPacketLengthDependencyParserRuleCall_17_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ONOFFFlow__PacketLengthAssignment_17"
+
+
+    // $ANTLR start "rule__GenericFlow__IdAssignment_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28751:1: rule__GenericFlow__IdAssignment_1 : ( RULE_ID ) ;
+    public final void rule__GenericFlow__IdAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28755:1: ( ( RULE_ID ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28756:1: ( RULE_ID )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28756:1: ( RULE_ID )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28757:1: RULE_ID
+            {
+             before(grammarAccess.getGenericFlowAccess().getIdIDTerminalRuleCall_1_0()); 
+            match(input,RULE_ID,FollowSets002.FOLLOW_RULE_ID_in_rule__GenericFlow__IdAssignment_156974); 
+             after(grammarAccess.getGenericFlowAccess().getIdIDTerminalRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__IdAssignment_1"
+
+
+    // $ANTLR start "rule__GenericFlow__NameAssignment_4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28766:1: rule__GenericFlow__NameAssignment_4 : ( ruleEString ) ;
+    public final void rule__GenericFlow__NameAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28770:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28771:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28771:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28772:1: ruleEString
+            {
+             before(grammarAccess.getGenericFlowAccess().getNameEStringParserRuleCall_4_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__GenericFlow__NameAssignment_457005);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getGenericFlowAccess().getNameEStringParserRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__NameAssignment_4"
+
+
+    // $ANTLR start "rule__GenericFlow__AlternativeNamesAssignment_5_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28781:1: rule__GenericFlow__AlternativeNamesAssignment_5_2 : ( ruleEString ) ;
+    public final void rule__GenericFlow__AlternativeNamesAssignment_5_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28785:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28786:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28786:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28787:1: ruleEString
+            {
+             before(grammarAccess.getGenericFlowAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__GenericFlow__AlternativeNamesAssignment_5_257036);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getGenericFlowAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__AlternativeNamesAssignment_5_2"
+
+
+    // $ANTLR start "rule__GenericFlow__AlternativeNamesAssignment_5_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28796:1: rule__GenericFlow__AlternativeNamesAssignment_5_3_1 : ( ruleEString ) ;
+    public final void rule__GenericFlow__AlternativeNamesAssignment_5_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28800:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28801:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28801:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28802:1: ruleEString
+            {
+             before(grammarAccess.getGenericFlowAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__GenericFlow__AlternativeNamesAssignment_5_3_157067);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getGenericFlowAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__AlternativeNamesAssignment_5_3_1"
+
+
+    // $ANTLR start "rule__GenericFlow__DestinationSoftwareComponentAssignment_6_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28811:1: rule__GenericFlow__DestinationSoftwareComponentAssignment_6_1 : ( ( ruleEString ) ) ;
+    public final void rule__GenericFlow__DestinationSoftwareComponentAssignment_6_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28815:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28816:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28816:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28817:1: ( ruleEString )
+            {
+             before(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentSoftwareComponentCrossReference_6_1_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28818:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28819:1: ruleEString
+            {
+             before(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentSoftwareComponentEStringParserRuleCall_6_1_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__GenericFlow__DestinationSoftwareComponentAssignment_6_157102);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentSoftwareComponentEStringParserRuleCall_6_1_0_1()); 
+
+            }
+
+             after(grammarAccess.getGenericFlowAccess().getDestinationSoftwareComponentSoftwareComponentCrossReference_6_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__DestinationSoftwareComponentAssignment_6_1"
+
+
+    // $ANTLR start "rule__GenericFlow__SourceSoftwareComponentAssignment_7_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28830:1: rule__GenericFlow__SourceSoftwareComponentAssignment_7_1 : ( ( ruleEString ) ) ;
+    public final void rule__GenericFlow__SourceSoftwareComponentAssignment_7_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28834:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28835:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28835:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28836:1: ( ruleEString )
+            {
+             before(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentSoftwareComponentCrossReference_7_1_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28837:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28838:1: ruleEString
+            {
+             before(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentSoftwareComponentEStringParserRuleCall_7_1_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__GenericFlow__SourceSoftwareComponentAssignment_7_157141);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentSoftwareComponentEStringParserRuleCall_7_1_0_1()); 
+
+            }
+
+             after(grammarAccess.getGenericFlowAccess().getSourceSoftwareComponentSoftwareComponentCrossReference_7_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__SourceSoftwareComponentAssignment_7_1"
+
+
+    // $ANTLR start "rule__GenericFlow__DestinationAddressesAssignment_8_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28849:1: rule__GenericFlow__DestinationAddressesAssignment_8_2 : ( ruleEntityAddress ) ;
+    public final void rule__GenericFlow__DestinationAddressesAssignment_8_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28853:1: ( ( ruleEntityAddress ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28854:1: ( ruleEntityAddress )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28854:1: ( ruleEntityAddress )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28855:1: ruleEntityAddress
+            {
+             before(grammarAccess.getGenericFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_8_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEntityAddress_in_rule__GenericFlow__DestinationAddressesAssignment_8_257176);
+            ruleEntityAddress();
+
+            state._fsp--;
+
+             after(grammarAccess.getGenericFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_8_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__DestinationAddressesAssignment_8_2"
+
+
+    // $ANTLR start "rule__GenericFlow__DestinationAddressesAssignment_8_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28864:1: rule__GenericFlow__DestinationAddressesAssignment_8_3_1 : ( ruleEntityAddress ) ;
+    public final void rule__GenericFlow__DestinationAddressesAssignment_8_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28868:1: ( ( ruleEntityAddress ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28869:1: ( ruleEntityAddress )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28869:1: ( ruleEntityAddress )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28870:1: ruleEntityAddress
+            {
+             before(grammarAccess.getGenericFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_8_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEntityAddress_in_rule__GenericFlow__DestinationAddressesAssignment_8_3_157207);
+            ruleEntityAddress();
+
+            state._fsp--;
+
+             after(grammarAccess.getGenericFlowAccess().getDestinationAddressesEntityAddressParserRuleCall_8_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__DestinationAddressesAssignment_8_3_1"
+
+
+    // $ANTLR start "rule__GenericFlow__DataSizeAssignment_10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28879:1: rule__GenericFlow__DataSizeAssignment_10 : ( ruleDependency ) ;
+    public final void rule__GenericFlow__DataSizeAssignment_10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28883:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28884:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28884:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28885:1: ruleDependency
+            {
+             before(grammarAccess.getGenericFlowAccess().getDataSizeDependencyParserRuleCall_10_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__GenericFlow__DataSizeAssignment_1057238);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getGenericFlowAccess().getDataSizeDependencyParserRuleCall_10_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericFlow__DataSizeAssignment_10"
+
+
+    // $ANTLR start "rule__NetworkProtocol__DeliveryGuaranteedAssignment_0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28894:1: rule__NetworkProtocol__DeliveryGuaranteedAssignment_0 : ( ( 'deliveryGuaranteed' ) ) ;
+    public final void rule__NetworkProtocol__DeliveryGuaranteedAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28898:1: ( ( ( 'deliveryGuaranteed' ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28899:1: ( ( 'deliveryGuaranteed' ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28899:1: ( ( 'deliveryGuaranteed' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28900:1: ( 'deliveryGuaranteed' )
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getDeliveryGuaranteedDeliveryGuaranteedKeyword_0_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28901:1: ( 'deliveryGuaranteed' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28902:1: 'deliveryGuaranteed'
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getDeliveryGuaranteedDeliveryGuaranteedKeyword_0_0()); 
+            match(input,160,FollowSets002.FOLLOW_160_in_rule__NetworkProtocol__DeliveryGuaranteedAssignment_057274); 
+             after(grammarAccess.getNetworkProtocolAccess().getDeliveryGuaranteedDeliveryGuaranteedKeyword_0_0()); 
+
+            }
+
+             after(grammarAccess.getNetworkProtocolAccess().getDeliveryGuaranteedDeliveryGuaranteedKeyword_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__DeliveryGuaranteedAssignment_0"
+
+
+    // $ANTLR start "rule__NetworkProtocol__NameAssignment_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28917:1: rule__NetworkProtocol__NameAssignment_2 : ( ruleEString ) ;
+    public final void rule__NetworkProtocol__NameAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28921:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28922:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28922:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28923:1: ruleEString
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getNameEStringParserRuleCall_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__NetworkProtocol__NameAssignment_257313);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkProtocolAccess().getNameEStringParserRuleCall_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__NameAssignment_2"
+
+
+    // $ANTLR start "rule__NetworkProtocol__AlternativeNamesAssignment_4_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28932:1: rule__NetworkProtocol__AlternativeNamesAssignment_4_2 : ( ruleEString ) ;
+    public final void rule__NetworkProtocol__AlternativeNamesAssignment_4_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28936:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28937:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28937:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28938:1: ruleEString
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesEStringParserRuleCall_4_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__NetworkProtocol__AlternativeNamesAssignment_4_257344);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesEStringParserRuleCall_4_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__AlternativeNamesAssignment_4_2"
+
+
+    // $ANTLR start "rule__NetworkProtocol__AlternativeNamesAssignment_4_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28947:1: rule__NetworkProtocol__AlternativeNamesAssignment_4_3_1 : ( ruleEString ) ;
+    public final void rule__NetworkProtocol__AlternativeNamesAssignment_4_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28951:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28952:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28952:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28953:1: ruleEString
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesEStringParserRuleCall_4_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__NetworkProtocol__AlternativeNamesAssignment_4_3_157375);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkProtocolAccess().getAlternativeNamesEStringParserRuleCall_4_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__AlternativeNamesAssignment_4_3_1"
+
+
+    // $ANTLR start "rule__NetworkProtocol__MtuAssignment_6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28962:1: rule__NetworkProtocol__MtuAssignment_6 : ( ruleEInt ) ;
+    public final void rule__NetworkProtocol__MtuAssignment_6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28966:1: ( ( ruleEInt ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28967:1: ( ruleEInt )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28967:1: ( ruleEInt )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28968:1: ruleEInt
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getMtuEIntParserRuleCall_6_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEInt_in_rule__NetworkProtocol__MtuAssignment_657406);
+            ruleEInt();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkProtocolAccess().getMtuEIntParserRuleCall_6_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__MtuAssignment_6"
+
+
+    // $ANTLR start "rule__NetworkProtocol__HeadersLengthAssignment_8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28977:1: rule__NetworkProtocol__HeadersLengthAssignment_8 : ( ruleEInt ) ;
+    public final void rule__NetworkProtocol__HeadersLengthAssignment_8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28981:1: ( ( ruleEInt ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28982:1: ( ruleEInt )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28982:1: ( ruleEInt )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28983:1: ruleEInt
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getHeadersLengthEIntParserRuleCall_8_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEInt_in_rule__NetworkProtocol__HeadersLengthAssignment_857437);
+            ruleEInt();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkProtocolAccess().getHeadersLengthEIntParserRuleCall_8_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__HeadersLengthAssignment_8"
+
+
+    // $ANTLR start "rule__NetworkProtocol__DataUnitLengthAssignment_10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28992:1: rule__NetworkProtocol__DataUnitLengthAssignment_10 : ( ruleEInt ) ;
+    public final void rule__NetworkProtocol__DataUnitLengthAssignment_10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28996:1: ( ( ruleEInt ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28997:1: ( ruleEInt )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28997:1: ( ruleEInt )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:28998:1: ruleEInt
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getDataUnitLengthEIntParserRuleCall_10_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEInt_in_rule__NetworkProtocol__DataUnitLengthAssignment_1057468);
+            ruleEInt();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkProtocolAccess().getDataUnitLengthEIntParserRuleCall_10_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__DataUnitLengthAssignment_10"
+
+
+    // $ANTLR start "rule__NetworkProtocol__ConnectionlessAssignment_11_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29007:1: rule__NetworkProtocol__ConnectionlessAssignment_11_1 : ( ruleEBoolean ) ;
+    public final void rule__NetworkProtocol__ConnectionlessAssignment_11_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29011:1: ( ( ruleEBoolean ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29012:1: ( ruleEBoolean )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29012:1: ( ruleEBoolean )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29013:1: ruleEBoolean
+            {
+             before(grammarAccess.getNetworkProtocolAccess().getConnectionlessEBooleanParserRuleCall_11_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEBoolean_in_rule__NetworkProtocol__ConnectionlessAssignment_11_157499);
+            ruleEBoolean();
+
+            state._fsp--;
+
+             after(grammarAccess.getNetworkProtocolAccess().getConnectionlessEBooleanParserRuleCall_11_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__NetworkProtocol__ConnectionlessAssignment_11_1"
+
+
+    // $ANTLR start "rule__ConstantDoubleVariable__ValueAssignment_3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29022:1: rule__ConstantDoubleVariable__ValueAssignment_3 : ( ruleEDouble ) ;
+    public final void rule__ConstantDoubleVariable__ValueAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29026:1: ( ( ruleEDouble ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29027:1: ( ruleEDouble )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29027:1: ( ruleEDouble )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29028:1: ruleEDouble
+            {
+             before(grammarAccess.getConstantDoubleVariableAccess().getValueEDoubleParserRuleCall_3_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEDouble_in_rule__ConstantDoubleVariable__ValueAssignment_357530);
+            ruleEDouble();
+
+            state._fsp--;
+
+             after(grammarAccess.getConstantDoubleVariableAccess().getValueEDoubleParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantDoubleVariable__ValueAssignment_3"
+
+
+    // $ANTLR start "rule__ConstantDoubleVariable__UnitAssignment_4_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29037:1: rule__ConstantDoubleVariable__UnitAssignment_4_1 : ( ruleDNIUnit ) ;
+    public final void rule__ConstantDoubleVariable__UnitAssignment_4_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29041:1: ( ( ruleDNIUnit ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29042:1: ( ruleDNIUnit )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29042:1: ( ruleDNIUnit )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29043:1: ruleDNIUnit
+            {
+             before(grammarAccess.getConstantDoubleVariableAccess().getUnitDNIUnitParserRuleCall_4_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDNIUnit_in_rule__ConstantDoubleVariable__UnitAssignment_4_157561);
+            ruleDNIUnit();
+
+            state._fsp--;
+
+             after(grammarAccess.getConstantDoubleVariableAccess().getUnitDNIUnitParserRuleCall_4_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantDoubleVariable__UnitAssignment_4_1"
+
+
+    // $ANTLR start "rule__ConstantLongVariable__ValueAssignment_3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29052:1: rule__ConstantLongVariable__ValueAssignment_3 : ( ruleELong ) ;
+    public final void rule__ConstantLongVariable__ValueAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29056:1: ( ( ruleELong ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29057:1: ( ruleELong )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29057:1: ( ruleELong )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29058:1: ruleELong
+            {
+             before(grammarAccess.getConstantLongVariableAccess().getValueELongParserRuleCall_3_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleELong_in_rule__ConstantLongVariable__ValueAssignment_357592);
+            ruleELong();
+
+            state._fsp--;
+
+             after(grammarAccess.getConstantLongVariableAccess().getValueELongParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantLongVariable__ValueAssignment_3"
+
+
+    // $ANTLR start "rule__ConstantLongVariable__UnitAssignment_4_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29067:1: rule__ConstantLongVariable__UnitAssignment_4_1 : ( ruleDNIUnit ) ;
+    public final void rule__ConstantLongVariable__UnitAssignment_4_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29071:1: ( ( ruleDNIUnit ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29072:1: ( ruleDNIUnit )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29072:1: ( ruleDNIUnit )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29073:1: ruleDNIUnit
+            {
+             before(grammarAccess.getConstantLongVariableAccess().getUnitDNIUnitParserRuleCall_4_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDNIUnit_in_rule__ConstantLongVariable__UnitAssignment_4_157623);
+            ruleDNIUnit();
+
+            state._fsp--;
+
+             after(grammarAccess.getConstantLongVariableAccess().getUnitDNIUnitParserRuleCall_4_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ConstantLongVariable__UnitAssignment_4_1"
+
+
+    // $ANTLR start "rule__RandomVariable__UnitAssignment_2_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29082:1: rule__RandomVariable__UnitAssignment_2_1 : ( ruleDNIUnit ) ;
+    public final void rule__RandomVariable__UnitAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29086:1: ( ( ruleDNIUnit ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29087:1: ( ruleDNIUnit )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29087:1: ( ruleDNIUnit )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29088:1: ruleDNIUnit
+            {
+             before(grammarAccess.getRandomVariableAccess().getUnitDNIUnitParserRuleCall_2_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDNIUnit_in_rule__RandomVariable__UnitAssignment_2_157654);
+            ruleDNIUnit();
+
+            state._fsp--;
+
+             after(grammarAccess.getRandomVariableAccess().getUnitDNIUnitParserRuleCall_2_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RandomVariable__UnitAssignment_2_1"
+
+
+    // $ANTLR start "rule__RandomVariable__CdfAssignment_4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29097:1: rule__RandomVariable__CdfAssignment_4 : ( ruleFunction ) ;
+    public final void rule__RandomVariable__CdfAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29101:1: ( ( ruleFunction ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29102:1: ( ruleFunction )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29102:1: ( ruleFunction )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29103:1: ruleFunction
+            {
+             before(grammarAccess.getRandomVariableAccess().getCdfFunctionParserRuleCall_4_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleFunction_in_rule__RandomVariable__CdfAssignment_457685);
+            ruleFunction();
+
+            state._fsp--;
+
+             after(grammarAccess.getRandomVariableAccess().getCdfFunctionParserRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RandomVariable__CdfAssignment_4"
+
+
+    // $ANTLR start "rule__ContinuousFunction__NumArgsAssignment_3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29112:1: rule__ContinuousFunction__NumArgsAssignment_3 : ( ruleEInt ) ;
+    public final void rule__ContinuousFunction__NumArgsAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29116:1: ( ( ruleEInt ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29117:1: ( ruleEInt )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29117:1: ( ruleEInt )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29118:1: ruleEInt
+            {
+             before(grammarAccess.getContinuousFunctionAccess().getNumArgsEIntParserRuleCall_3_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEInt_in_rule__ContinuousFunction__NumArgsAssignment_357716);
+            ruleEInt();
+
+            state._fsp--;
+
+             after(grammarAccess.getContinuousFunctionAccess().getNumArgsEIntParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__NumArgsAssignment_3"
+
+
+    // $ANTLR start "rule__ContinuousFunction__EquationAssignment_5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29127:1: rule__ContinuousFunction__EquationAssignment_5 : ( ruleEString ) ;
+    public final void rule__ContinuousFunction__EquationAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29131:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29132:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29132:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29133:1: ruleEString
+            {
+             before(grammarAccess.getContinuousFunctionAccess().getEquationEStringParserRuleCall_5_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__ContinuousFunction__EquationAssignment_557747);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getContinuousFunctionAccess().getEquationEStringParserRuleCall_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__EquationAssignment_5"
+
+
+    // $ANTLR start "rule__ContinuousFunction__UnitAssignment_6_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29142:1: rule__ContinuousFunction__UnitAssignment_6_1 : ( ruleDNIUnit ) ;
+    public final void rule__ContinuousFunction__UnitAssignment_6_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29146:1: ( ( ruleDNIUnit ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29147:1: ( ruleDNIUnit )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29147:1: ( ruleDNIUnit )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29148:1: ruleDNIUnit
+            {
+             before(grammarAccess.getContinuousFunctionAccess().getUnitDNIUnitParserRuleCall_6_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDNIUnit_in_rule__ContinuousFunction__UnitAssignment_6_157778);
+            ruleDNIUnit();
+
+            state._fsp--;
+
+             after(grammarAccess.getContinuousFunctionAccess().getUnitDNIUnitParserRuleCall_6_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ContinuousFunction__UnitAssignment_6_1"
+
+
+    // $ANTLR start "rule__DiscreteFunction__NumArgsAssignment_3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29157:1: rule__DiscreteFunction__NumArgsAssignment_3 : ( ruleEInt ) ;
+    public final void rule__DiscreteFunction__NumArgsAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29161:1: ( ( ruleEInt ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29162:1: ( ruleEInt )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29162:1: ( ruleEInt )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29163:1: ruleEInt
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getNumArgsEIntParserRuleCall_3_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEInt_in_rule__DiscreteFunction__NumArgsAssignment_357809);
+            ruleEInt();
+
+            state._fsp--;
+
+             after(grammarAccess.getDiscreteFunctionAccess().getNumArgsEIntParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__NumArgsAssignment_3"
+
+
+    // $ANTLR start "rule__DiscreteFunction__UnitAssignment_4_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29172:1: rule__DiscreteFunction__UnitAssignment_4_1 : ( ruleDNIUnit ) ;
+    public final void rule__DiscreteFunction__UnitAssignment_4_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29176:1: ( ( ruleDNIUnit ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29177:1: ( ruleDNIUnit )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29177:1: ( ruleDNIUnit )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29178:1: ruleDNIUnit
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getUnitDNIUnitParserRuleCall_4_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDNIUnit_in_rule__DiscreteFunction__UnitAssignment_4_157840);
+            ruleDNIUnit();
+
+            state._fsp--;
+
+             after(grammarAccess.getDiscreteFunctionAccess().getUnitDNIUnitParserRuleCall_4_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__UnitAssignment_4_1"
+
+
+    // $ANTLR start "rule__DiscreteFunction__XAssignment_7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29187:1: rule__DiscreteFunction__XAssignment_7 : ( ruleDataSeries ) ;
+    public final void rule__DiscreteFunction__XAssignment_7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29191:1: ( ( ruleDataSeries ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29192:1: ( ruleDataSeries )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29192:1: ( ruleDataSeries )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29193:1: ruleDataSeries
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getXDataSeriesParserRuleCall_7_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDataSeries_in_rule__DiscreteFunction__XAssignment_757871);
+            ruleDataSeries();
+
+            state._fsp--;
+
+             after(grammarAccess.getDiscreteFunctionAccess().getXDataSeriesParserRuleCall_7_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__XAssignment_7"
+
+
+    // $ANTLR start "rule__DiscreteFunction__XAssignment_8_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29202:1: rule__DiscreteFunction__XAssignment_8_1 : ( ruleDataSeries ) ;
+    public final void rule__DiscreteFunction__XAssignment_8_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29206:1: ( ( ruleDataSeries ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29207:1: ( ruleDataSeries )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29207:1: ( ruleDataSeries )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29208:1: ruleDataSeries
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getXDataSeriesParserRuleCall_8_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDataSeries_in_rule__DiscreteFunction__XAssignment_8_157902);
+            ruleDataSeries();
+
+            state._fsp--;
+
+             after(grammarAccess.getDiscreteFunctionAccess().getXDataSeriesParserRuleCall_8_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__XAssignment_8_1"
+
+
+    // $ANTLR start "rule__DiscreteFunction__YAssignment_11"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29217:1: rule__DiscreteFunction__YAssignment_11 : ( ruleDataSeries ) ;
+    public final void rule__DiscreteFunction__YAssignment_11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29221:1: ( ( ruleDataSeries ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29222:1: ( ruleDataSeries )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29222:1: ( ruleDataSeries )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29223:1: ruleDataSeries
+            {
+             before(grammarAccess.getDiscreteFunctionAccess().getYDataSeriesParserRuleCall_11_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDataSeries_in_rule__DiscreteFunction__YAssignment_1157933);
+            ruleDataSeries();
+
+            state._fsp--;
+
+             after(grammarAccess.getDiscreteFunctionAccess().getYDataSeriesParserRuleCall_11_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DiscreteFunction__YAssignment_11"
+
+
+    // $ANTLR start "rule__SpeedUnit__PrefixAssignment_3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29232:1: rule__SpeedUnit__PrefixAssignment_3 : ( ruleUnitPrefix ) ;
+    public final void rule__SpeedUnit__PrefixAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29236:1: ( ( ruleUnitPrefix ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29237:1: ( ruleUnitPrefix )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29237:1: ( ruleUnitPrefix )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29238:1: ruleUnitPrefix
+            {
+             before(grammarAccess.getSpeedUnitAccess().getPrefixUnitPrefixEnumRuleCall_3_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleUnitPrefix_in_rule__SpeedUnit__PrefixAssignment_357964);
+            ruleUnitPrefix();
+
+            state._fsp--;
+
+             after(grammarAccess.getSpeedUnitAccess().getPrefixUnitPrefixEnumRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__PrefixAssignment_3"
+
+
+    // $ANTLR start "rule__SpeedUnit__ValueAssignment_5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29247:1: rule__SpeedUnit__ValueAssignment_5 : ( ruleEFloat ) ;
+    public final void rule__SpeedUnit__ValueAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29251:1: ( ( ruleEFloat ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29252:1: ( ruleEFloat )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29252:1: ( ruleEFloat )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29253:1: ruleEFloat
+            {
+             before(grammarAccess.getSpeedUnitAccess().getValueEFloatParserRuleCall_5_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEFloat_in_rule__SpeedUnit__ValueAssignment_557995);
+            ruleEFloat();
+
+            state._fsp--;
+
+             after(grammarAccess.getSpeedUnitAccess().getValueEFloatParserRuleCall_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__ValueAssignment_5"
+
+
+    // $ANTLR start "rule__SpeedUnit__UnitAssignment_7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29262:1: rule__SpeedUnit__UnitAssignment_7 : ( ruleSpeed ) ;
+    public final void rule__SpeedUnit__UnitAssignment_7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29266:1: ( ( ruleSpeed ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29267:1: ( ruleSpeed )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29267:1: ( ruleSpeed )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29268:1: ruleSpeed
+            {
+             before(grammarAccess.getSpeedUnitAccess().getUnitSpeedEnumRuleCall_7_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleSpeed_in_rule__SpeedUnit__UnitAssignment_758026);
+            ruleSpeed();
+
+            state._fsp--;
+
+             after(grammarAccess.getSpeedUnitAccess().getUnitSpeedEnumRuleCall_7_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SpeedUnit__UnitAssignment_7"
+
+
+    // $ANTLR start "rule__DataSeries__DataAssignment_3_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29277:1: rule__DataSeries__DataAssignment_3_2 : ( ruleEDouble ) ;
+    public final void rule__DataSeries__DataAssignment_3_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29281:1: ( ( ruleEDouble ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29282:1: ( ruleEDouble )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29282:1: ( ruleEDouble )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29283:1: ruleEDouble
+            {
+             before(grammarAccess.getDataSeriesAccess().getDataEDoubleParserRuleCall_3_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEDouble_in_rule__DataSeries__DataAssignment_3_258057);
+            ruleEDouble();
+
+            state._fsp--;
+
+             after(grammarAccess.getDataSeriesAccess().getDataEDoubleParserRuleCall_3_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__DataAssignment_3_2"
+
+
+    // $ANTLR start "rule__DataSeries__DataAssignment_3_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29292:1: rule__DataSeries__DataAssignment_3_3_1 : ( ruleEDouble ) ;
+    public final void rule__DataSeries__DataAssignment_3_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29296:1: ( ( ruleEDouble ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29297:1: ( ruleEDouble )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29297:1: ( ruleEDouble )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29298:1: ruleEDouble
+            {
+             before(grammarAccess.getDataSeriesAccess().getDataEDoubleParserRuleCall_3_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEDouble_in_rule__DataSeries__DataAssignment_3_3_158088);
+            ruleEDouble();
+
+            state._fsp--;
+
+             after(grammarAccess.getDataSeriesAccess().getDataEDoubleParserRuleCall_3_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DataSeries__DataAssignment_3_3_1"
+
+
+    // $ANTLR start "rule__TrafficSource__IdAssignment_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29307:1: rule__TrafficSource__IdAssignment_1 : ( RULE_ID ) ;
+    public final void rule__TrafficSource__IdAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29311:1: ( ( RULE_ID ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29312:1: ( RULE_ID )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29312:1: ( RULE_ID )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29313:1: RULE_ID
+            {
+             before(grammarAccess.getTrafficSourceAccess().getIdIDTerminalRuleCall_1_0()); 
+            match(input,RULE_ID,FollowSets002.FOLLOW_RULE_ID_in_rule__TrafficSource__IdAssignment_158119); 
+             after(grammarAccess.getTrafficSourceAccess().getIdIDTerminalRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__IdAssignment_1"
+
+
+    // $ANTLR start "rule__TrafficSource__NameAssignment_4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29322:1: rule__TrafficSource__NameAssignment_4 : ( ruleEString ) ;
+    public final void rule__TrafficSource__NameAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29326:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29327:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29327:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29328:1: ruleEString
+            {
+             before(grammarAccess.getTrafficSourceAccess().getNameEStringParserRuleCall_4_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__TrafficSource__NameAssignment_458150);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getTrafficSourceAccess().getNameEStringParserRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__NameAssignment_4"
+
+
+    // $ANTLR start "rule__TrafficSource__AlternativeNamesAssignment_5_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29337:1: rule__TrafficSource__AlternativeNamesAssignment_5_2 : ( ruleEString ) ;
+    public final void rule__TrafficSource__AlternativeNamesAssignment_5_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29341:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29342:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29342:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29343:1: ruleEString
+            {
+             before(grammarAccess.getTrafficSourceAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__TrafficSource__AlternativeNamesAssignment_5_258181);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getTrafficSourceAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__AlternativeNamesAssignment_5_2"
+
+
+    // $ANTLR start "rule__TrafficSource__AlternativeNamesAssignment_5_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29352:1: rule__TrafficSource__AlternativeNamesAssignment_5_3_1 : ( ruleEString ) ;
+    public final void rule__TrafficSource__AlternativeNamesAssignment_5_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29356:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29357:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29357:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29358:1: ruleEString
+            {
+             before(grammarAccess.getTrafficSourceAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__TrafficSource__AlternativeNamesAssignment_5_3_158212);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getTrafficSourceAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__AlternativeNamesAssignment_5_3_1"
+
+
+    // $ANTLR start "rule__TrafficSource__AddressesAssignment_6_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29367:1: rule__TrafficSource__AddressesAssignment_6_2 : ( ruleEntityAddress ) ;
+    public final void rule__TrafficSource__AddressesAssignment_6_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29371:1: ( ( ruleEntityAddress ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29372:1: ( ruleEntityAddress )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29372:1: ( ruleEntityAddress )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29373:1: ruleEntityAddress
+            {
+             before(grammarAccess.getTrafficSourceAccess().getAddressesEntityAddressParserRuleCall_6_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEntityAddress_in_rule__TrafficSource__AddressesAssignment_6_258243);
+            ruleEntityAddress();
+
+            state._fsp--;
+
+             after(grammarAccess.getTrafficSourceAccess().getAddressesEntityAddressParserRuleCall_6_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__AddressesAssignment_6_2"
+
+
+    // $ANTLR start "rule__TrafficSource__AddressesAssignment_6_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29382:1: rule__TrafficSource__AddressesAssignment_6_3_1 : ( ruleEntityAddress ) ;
+    public final void rule__TrafficSource__AddressesAssignment_6_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29386:1: ( ( ruleEntityAddress ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29387:1: ( ruleEntityAddress )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29387:1: ( ruleEntityAddress )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29388:1: ruleEntityAddress
+            {
+             before(grammarAccess.getTrafficSourceAccess().getAddressesEntityAddressParserRuleCall_6_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEntityAddress_in_rule__TrafficSource__AddressesAssignment_6_3_158274);
+            ruleEntityAddress();
+
+            state._fsp--;
+
+             after(grammarAccess.getTrafficSourceAccess().getAddressesEntityAddressParserRuleCall_6_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__AddressesAssignment_6_3_1"
+
+
+    // $ANTLR start "rule__TrafficSource__WorkloadAssignment_9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29397:1: rule__TrafficSource__WorkloadAssignment_9 : ( ruleWorkload ) ;
+    public final void rule__TrafficSource__WorkloadAssignment_9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29401:1: ( ( ruleWorkload ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29402:1: ( ruleWorkload )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29402:1: ( ruleWorkload )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29403:1: ruleWorkload
+            {
+             before(grammarAccess.getTrafficSourceAccess().getWorkloadWorkloadParserRuleCall_9_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleWorkload_in_rule__TrafficSource__WorkloadAssignment_958305);
+            ruleWorkload();
+
+            state._fsp--;
+
+             after(grammarAccess.getTrafficSourceAccess().getWorkloadWorkloadParserRuleCall_9_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__WorkloadAssignment_9"
+
+
+    // $ANTLR start "rule__TrafficSource__WorkloadAssignment_10_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29412:1: rule__TrafficSource__WorkloadAssignment_10_1 : ( ruleWorkload ) ;
+    public final void rule__TrafficSource__WorkloadAssignment_10_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29416:1: ( ( ruleWorkload ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29417:1: ( ruleWorkload )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29417:1: ( ruleWorkload )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29418:1: ruleWorkload
+            {
+             before(grammarAccess.getTrafficSourceAccess().getWorkloadWorkloadParserRuleCall_10_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleWorkload_in_rule__TrafficSource__WorkloadAssignment_10_158336);
+            ruleWorkload();
+
+            state._fsp--;
+
+             after(grammarAccess.getTrafficSourceAccess().getWorkloadWorkloadParserRuleCall_10_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TrafficSource__WorkloadAssignment_10_1"
+
+
+    // $ANTLR start "rule__GenericWorkload__ActionsAssignment_3_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29427:1: rule__GenericWorkload__ActionsAssignment_3_2 : ( ruleAbstractAction ) ;
+    public final void rule__GenericWorkload__ActionsAssignment_3_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29431:1: ( ( ruleAbstractAction ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29432:1: ( ruleAbstractAction )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29432:1: ( ruleAbstractAction )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29433:1: ruleAbstractAction
+            {
+             before(grammarAccess.getGenericWorkloadAccess().getActionsAbstractActionParserRuleCall_3_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleAbstractAction_in_rule__GenericWorkload__ActionsAssignment_3_258367);
+            ruleAbstractAction();
+
+            state._fsp--;
+
+             after(grammarAccess.getGenericWorkloadAccess().getActionsAbstractActionParserRuleCall_3_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__ActionsAssignment_3_2"
+
+
+    // $ANTLR start "rule__GenericWorkload__ActionsAssignment_3_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29442:1: rule__GenericWorkload__ActionsAssignment_3_3_1 : ( ruleAbstractAction ) ;
+    public final void rule__GenericWorkload__ActionsAssignment_3_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29446:1: ( ( ruleAbstractAction ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29447:1: ( ruleAbstractAction )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29447:1: ( ruleAbstractAction )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29448:1: ruleAbstractAction
+            {
+             before(grammarAccess.getGenericWorkloadAccess().getActionsAbstractActionParserRuleCall_3_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleAbstractAction_in_rule__GenericWorkload__ActionsAssignment_3_3_158398);
+            ruleAbstractAction();
+
+            state._fsp--;
+
+             after(grammarAccess.getGenericWorkloadAccess().getActionsAbstractActionParserRuleCall_3_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__GenericWorkload__ActionsAssignment_3_3_1"
+
+
+    // $ANTLR start "rule__BranchAction__InternAssignment_4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29457:1: rule__BranchAction__InternAssignment_4 : ( ruleAbstractAction ) ;
+    public final void rule__BranchAction__InternAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29461:1: ( ( ruleAbstractAction ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29462:1: ( ruleAbstractAction )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29462:1: ( ruleAbstractAction )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29463:1: ruleAbstractAction
+            {
+             before(grammarAccess.getBranchActionAccess().getInternAbstractActionParserRuleCall_4_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleAbstractAction_in_rule__BranchAction__InternAssignment_458429);
+            ruleAbstractAction();
+
+            state._fsp--;
+
+             after(grammarAccess.getBranchActionAccess().getInternAbstractActionParserRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__InternAssignment_4"
+
+
+    // $ANTLR start "rule__BranchAction__InternAssignment_5_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29472:1: rule__BranchAction__InternAssignment_5_1 : ( ruleAbstractAction ) ;
+    public final void rule__BranchAction__InternAssignment_5_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29476:1: ( ( ruleAbstractAction ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29477:1: ( ruleAbstractAction )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29477:1: ( ruleAbstractAction )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29478:1: ruleAbstractAction
+            {
+             before(grammarAccess.getBranchActionAccess().getInternAbstractActionParserRuleCall_5_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleAbstractAction_in_rule__BranchAction__InternAssignment_5_158460);
+            ruleAbstractAction();
+
+            state._fsp--;
+
+             after(grammarAccess.getBranchActionAccess().getInternAbstractActionParserRuleCall_5_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__BranchAction__InternAssignment_5_1"
+
+
+    // $ANTLR start "rule__LoopAction__InternAssignment_3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29487:1: rule__LoopAction__InternAssignment_3 : ( ruleAbstractAction ) ;
+    public final void rule__LoopAction__InternAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29491:1: ( ( ruleAbstractAction ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29492:1: ( ruleAbstractAction )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29492:1: ( ruleAbstractAction )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29493:1: ruleAbstractAction
+            {
+             before(grammarAccess.getLoopActionAccess().getInternAbstractActionParserRuleCall_3_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleAbstractAction_in_rule__LoopAction__InternAssignment_358491);
+            ruleAbstractAction();
+
+            state._fsp--;
+
+             after(grammarAccess.getLoopActionAccess().getInternAbstractActionParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LoopAction__InternAssignment_3"
+
+
+    // $ANTLR start "rule__LoopAction__NumIterationsAssignment_5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29502:1: rule__LoopAction__NumIterationsAssignment_5 : ( ruleDependency ) ;
+    public final void rule__LoopAction__NumIterationsAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29506:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29507:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29507:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29508:1: ruleDependency
+            {
+             before(grammarAccess.getLoopActionAccess().getNumIterationsDependencyParserRuleCall_5_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__LoopAction__NumIterationsAssignment_558522);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getLoopActionAccess().getNumIterationsDependencyParserRuleCall_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LoopAction__NumIterationsAssignment_5"
+
+
+    // $ANTLR start "rule__SequenceAction__InternAssignment_4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29517:1: rule__SequenceAction__InternAssignment_4 : ( ruleAbstractAction ) ;
+    public final void rule__SequenceAction__InternAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29521:1: ( ( ruleAbstractAction ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29522:1: ( ruleAbstractAction )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29522:1: ( ruleAbstractAction )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29523:1: ruleAbstractAction
+            {
+             before(grammarAccess.getSequenceActionAccess().getInternAbstractActionParserRuleCall_4_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleAbstractAction_in_rule__SequenceAction__InternAssignment_458553);
+            ruleAbstractAction();
+
+            state._fsp--;
+
+             after(grammarAccess.getSequenceActionAccess().getInternAbstractActionParserRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__InternAssignment_4"
+
+
+    // $ANTLR start "rule__SequenceAction__InternAssignment_5_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29532:1: rule__SequenceAction__InternAssignment_5_1 : ( ruleAbstractAction ) ;
+    public final void rule__SequenceAction__InternAssignment_5_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29536:1: ( ( ruleAbstractAction ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29537:1: ( ruleAbstractAction )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29537:1: ( ruleAbstractAction )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29538:1: ruleAbstractAction
+            {
+             before(grammarAccess.getSequenceActionAccess().getInternAbstractActionParserRuleCall_5_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleAbstractAction_in_rule__SequenceAction__InternAssignment_5_158584);
+            ruleAbstractAction();
+
+            state._fsp--;
+
+             after(grammarAccess.getSequenceActionAccess().getInternAbstractActionParserRuleCall_5_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SequenceAction__InternAssignment_5_1"
+
+
+    // $ANTLR start "rule__TransmitAction__FlowAssignment_3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29547:1: rule__TransmitAction__FlowAssignment_3 : ( ( ruleEString ) ) ;
+    public final void rule__TransmitAction__FlowAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29551:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29552:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29552:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29553:1: ( ruleEString )
+            {
+             before(grammarAccess.getTransmitActionAccess().getFlowFlowCrossReference_3_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29554:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29555:1: ruleEString
+            {
+             before(grammarAccess.getTransmitActionAccess().getFlowFlowEStringParserRuleCall_3_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__TransmitAction__FlowAssignment_358619);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getTransmitActionAccess().getFlowFlowEStringParserRuleCall_3_0_1()); 
+
+            }
+
+             after(grammarAccess.getTransmitActionAccess().getFlowFlowCrossReference_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TransmitAction__FlowAssignment_3"
+
+
+    // $ANTLR start "rule__WaitAction__WaitTimeAssignment_3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29566:1: rule__WaitAction__WaitTimeAssignment_3 : ( ruleDependency ) ;
+    public final void rule__WaitAction__WaitTimeAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29570:1: ( ( ruleDependency ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29571:1: ( ruleDependency )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29571:1: ( ruleDependency )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29572:1: ruleDependency
+            {
+             before(grammarAccess.getWaitActionAccess().getWaitTimeDependencyParserRuleCall_3_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDependency_in_rule__WaitAction__WaitTimeAssignment_358654);
+            ruleDependency();
+
+            state._fsp--;
+
+             after(grammarAccess.getWaitActionAccess().getWaitTimeDependencyParserRuleCall_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WaitAction__WaitTimeAssignment_3"
+
+
+    // $ANTLR start "rule__VirtualNode__IdAssignment_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29581:1: rule__VirtualNode__IdAssignment_1 : ( RULE_ID ) ;
+    public final void rule__VirtualNode__IdAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29585:1: ( ( RULE_ID ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29586:1: ( RULE_ID )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29586:1: ( RULE_ID )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29587:1: RULE_ID
+            {
+             before(grammarAccess.getVirtualNodeAccess().getIdIDTerminalRuleCall_1_0()); 
+            match(input,RULE_ID,FollowSets002.FOLLOW_RULE_ID_in_rule__VirtualNode__IdAssignment_158685); 
+             after(grammarAccess.getVirtualNodeAccess().getIdIDTerminalRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__IdAssignment_1"
+
+
+    // $ANTLR start "rule__VirtualNode__NameAssignment_4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29596:1: rule__VirtualNode__NameAssignment_4 : ( ruleEString ) ;
+    public final void rule__VirtualNode__NameAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29600:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29601:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29601:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29602:1: ruleEString
+            {
+             before(grammarAccess.getVirtualNodeAccess().getNameEStringParserRuleCall_4_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__VirtualNode__NameAssignment_458716);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNodeAccess().getNameEStringParserRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__NameAssignment_4"
+
+
+    // $ANTLR start "rule__VirtualNode__AlternativeNamesAssignment_5_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29611:1: rule__VirtualNode__AlternativeNamesAssignment_5_2 : ( ruleEString ) ;
+    public final void rule__VirtualNode__AlternativeNamesAssignment_5_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29615:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29616:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29616:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29617:1: ruleEString
+            {
+             before(grammarAccess.getVirtualNodeAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__VirtualNode__AlternativeNamesAssignment_5_258747);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNodeAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__AlternativeNamesAssignment_5_2"
+
+
+    // $ANTLR start "rule__VirtualNode__AlternativeNamesAssignment_5_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29626:1: rule__VirtualNode__AlternativeNamesAssignment_5_3_1 : ( ruleEString ) ;
+    public final void rule__VirtualNode__AlternativeNamesAssignment_5_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29630:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29631:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29631:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29632:1: ruleEString
+            {
+             before(grammarAccess.getVirtualNodeAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__VirtualNode__AlternativeNamesAssignment_5_3_158778);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNodeAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__AlternativeNamesAssignment_5_3_1"
+
+
+    // $ANTLR start "rule__VirtualNode__SoftwareAssignment_6_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29641:1: rule__VirtualNode__SoftwareAssignment_6_2 : ( ( ruleEString ) ) ;
+    public final void rule__VirtualNode__SoftwareAssignment_6_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29645:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29646:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29646:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29647:1: ( ruleEString )
+            {
+             before(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentCrossReference_6_2_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29648:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29649:1: ruleEString
+            {
+             before(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_2_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__VirtualNode__SoftwareAssignment_6_258813);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_2_0_1()); 
+
+            }
+
+             after(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentCrossReference_6_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__SoftwareAssignment_6_2"
+
+
+    // $ANTLR start "rule__VirtualNode__SoftwareAssignment_6_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29660:1: rule__VirtualNode__SoftwareAssignment_6_3_1 : ( ( ruleEString ) ) ;
+    public final void rule__VirtualNode__SoftwareAssignment_6_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29664:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29665:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29665:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29666:1: ( ruleEString )
+            {
+             before(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentCrossReference_6_3_1_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29667:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29668:1: ruleEString
+            {
+             before(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_3_1_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__VirtualNode__SoftwareAssignment_6_3_158852);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_3_1_0_1()); 
+
+            }
+
+             after(grammarAccess.getVirtualNodeAccess().getSoftwareSoftwareComponentCrossReference_6_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__SoftwareAssignment_6_3_1"
+
+
+    // $ANTLR start "rule__VirtualNode__HostedOnAssignment_8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29679:1: rule__VirtualNode__HostedOnAssignment_8 : ( ( ruleEString ) ) ;
+    public final void rule__VirtualNode__HostedOnAssignment_8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29683:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29684:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29684:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29685:1: ( ruleEString )
+            {
+             before(grammarAccess.getVirtualNodeAccess().getHostedOnPhysicalNodeCrossReference_8_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29686:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29687:1: ruleEString
+            {
+             before(grammarAccess.getVirtualNodeAccess().getHostedOnPhysicalNodeEStringParserRuleCall_8_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__VirtualNode__HostedOnAssignment_858891);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNodeAccess().getHostedOnPhysicalNodeEStringParserRuleCall_8_0_1()); 
+
+            }
+
+             after(grammarAccess.getVirtualNodeAccess().getHostedOnPhysicalNodeCrossReference_8_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__HostedOnAssignment_8"
+
+
+    // $ANTLR start "rule__VirtualNode__PerformanceAssignment_10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29698:1: rule__VirtualNode__PerformanceAssignment_10 : ( rulePerformanceSpecification ) ;
+    public final void rule__VirtualNode__PerformanceAssignment_10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29702:1: ( ( rulePerformanceSpecification ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29703:1: ( rulePerformanceSpecification )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29703:1: ( rulePerformanceSpecification )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29704:1: rulePerformanceSpecification
+            {
+             before(grammarAccess.getVirtualNodeAccess().getPerformancePerformanceSpecificationParserRuleCall_10_0()); 
+            pushFollow(FollowSets002.FOLLOW_rulePerformanceSpecification_in_rule__VirtualNode__PerformanceAssignment_1058926);
+            rulePerformanceSpecification();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNodeAccess().getPerformancePerformanceSpecificationParserRuleCall_10_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__PerformanceAssignment_10"
+
+
+    // $ANTLR start "rule__VirtualNode__InterfacesAssignment_11_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29713:1: rule__VirtualNode__InterfacesAssignment_11_2 : ( ruleVirtualNetworkInterface ) ;
+    public final void rule__VirtualNode__InterfacesAssignment_11_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29717:1: ( ( ruleVirtualNetworkInterface ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29718:1: ( ruleVirtualNetworkInterface )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29718:1: ( ruleVirtualNetworkInterface )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29719:1: ruleVirtualNetworkInterface
+            {
+             before(grammarAccess.getVirtualNodeAccess().getInterfacesVirtualNetworkInterfaceParserRuleCall_11_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleVirtualNetworkInterface_in_rule__VirtualNode__InterfacesAssignment_11_258957);
+            ruleVirtualNetworkInterface();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNodeAccess().getInterfacesVirtualNetworkInterfaceParserRuleCall_11_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__InterfacesAssignment_11_2"
+
+
+    // $ANTLR start "rule__VirtualNode__InterfacesAssignment_11_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29728:1: rule__VirtualNode__InterfacesAssignment_11_3_1 : ( ruleVirtualNetworkInterface ) ;
+    public final void rule__VirtualNode__InterfacesAssignment_11_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29732:1: ( ( ruleVirtualNetworkInterface ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29733:1: ( ruleVirtualNetworkInterface )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29733:1: ( ruleVirtualNetworkInterface )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29734:1: ruleVirtualNetworkInterface
+            {
+             before(grammarAccess.getVirtualNodeAccess().getInterfacesVirtualNetworkInterfaceParserRuleCall_11_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleVirtualNetworkInterface_in_rule__VirtualNode__InterfacesAssignment_11_3_158988);
+            ruleVirtualNetworkInterface();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNodeAccess().getInterfacesVirtualNetworkInterfaceParserRuleCall_11_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNode__InterfacesAssignment_11_3_1"
+
+
+    // $ANTLR start "rule__PhysicalNode__IdAssignment_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29743:1: rule__PhysicalNode__IdAssignment_1 : ( RULE_ID ) ;
+    public final void rule__PhysicalNode__IdAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29747:1: ( ( RULE_ID ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29748:1: ( RULE_ID )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29748:1: ( RULE_ID )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29749:1: RULE_ID
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getIdIDTerminalRuleCall_1_0()); 
+            match(input,RULE_ID,FollowSets002.FOLLOW_RULE_ID_in_rule__PhysicalNode__IdAssignment_159019); 
+             after(grammarAccess.getPhysicalNodeAccess().getIdIDTerminalRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__IdAssignment_1"
+
+
+    // $ANTLR start "rule__PhysicalNode__NameAssignment_4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29758:1: rule__PhysicalNode__NameAssignment_4 : ( ruleEString ) ;
+    public final void rule__PhysicalNode__NameAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29762:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29763:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29763:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29764:1: ruleEString
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getNameEStringParserRuleCall_4_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__PhysicalNode__NameAssignment_459050);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNodeAccess().getNameEStringParserRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__NameAssignment_4"
+
+
+    // $ANTLR start "rule__PhysicalNode__AlternativeNamesAssignment_5_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29773:1: rule__PhysicalNode__AlternativeNamesAssignment_5_2 : ( ruleEString ) ;
+    public final void rule__PhysicalNode__AlternativeNamesAssignment_5_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29777:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29778:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29778:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29779:1: ruleEString
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__PhysicalNode__AlternativeNamesAssignment_5_259081);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__AlternativeNamesAssignment_5_2"
+
+
+    // $ANTLR start "rule__PhysicalNode__AlternativeNamesAssignment_5_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29788:1: rule__PhysicalNode__AlternativeNamesAssignment_5_3_1 : ( ruleEString ) ;
+    public final void rule__PhysicalNode__AlternativeNamesAssignment_5_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29792:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29793:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29793:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29794:1: ruleEString
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__PhysicalNode__AlternativeNamesAssignment_5_3_159112);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNodeAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__AlternativeNamesAssignment_5_3_1"
+
+
+    // $ANTLR start "rule__PhysicalNode__SoftwareAssignment_6_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29803:1: rule__PhysicalNode__SoftwareAssignment_6_2 : ( ( ruleEString ) ) ;
+    public final void rule__PhysicalNode__SoftwareAssignment_6_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29807:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29808:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29808:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29809:1: ( ruleEString )
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentCrossReference_6_2_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29810:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29811:1: ruleEString
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_2_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__PhysicalNode__SoftwareAssignment_6_259147);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_2_0_1()); 
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentCrossReference_6_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__SoftwareAssignment_6_2"
+
+
+    // $ANTLR start "rule__PhysicalNode__SoftwareAssignment_6_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29822:1: rule__PhysicalNode__SoftwareAssignment_6_3_1 : ( ( ruleEString ) ) ;
+    public final void rule__PhysicalNode__SoftwareAssignment_6_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29826:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29827:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29827:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29828:1: ( ruleEString )
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentCrossReference_6_3_1_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29829:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29830:1: ruleEString
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_3_1_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__PhysicalNode__SoftwareAssignment_6_3_159186);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentEStringParserRuleCall_6_3_1_0_1()); 
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getSoftwareSoftwareComponentCrossReference_6_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__SoftwareAssignment_6_3_1"
+
+
+    // $ANTLR start "rule__PhysicalNode__HostsAssignment_7_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29841:1: rule__PhysicalNode__HostsAssignment_7_2 : ( ( ruleEString ) ) ;
+    public final void rule__PhysicalNode__HostsAssignment_7_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29845:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29846:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29846:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29847:1: ( ruleEString )
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeCrossReference_7_2_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29848:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29849:1: ruleEString
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeEStringParserRuleCall_7_2_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__PhysicalNode__HostsAssignment_7_259225);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeEStringParserRuleCall_7_2_0_1()); 
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeCrossReference_7_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__HostsAssignment_7_2"
+
+
+    // $ANTLR start "rule__PhysicalNode__HostsAssignment_7_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29860:1: rule__PhysicalNode__HostsAssignment_7_3_1 : ( ( ruleEString ) ) ;
+    public final void rule__PhysicalNode__HostsAssignment_7_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29864:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29865:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29865:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29866:1: ( ruleEString )
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeCrossReference_7_3_1_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29867:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29868:1: ruleEString
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeEStringParserRuleCall_7_3_1_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__PhysicalNode__HostsAssignment_7_3_159264);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeEStringParserRuleCall_7_3_1_0_1()); 
+
+            }
+
+             after(grammarAccess.getPhysicalNodeAccess().getHostsVirtualNodeCrossReference_7_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__HostsAssignment_7_3_1"
+
+
+    // $ANTLR start "rule__PhysicalNode__PerformanceAssignment_9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29879:1: rule__PhysicalNode__PerformanceAssignment_9 : ( rulePerformanceSpecification ) ;
+    public final void rule__PhysicalNode__PerformanceAssignment_9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29883:1: ( ( rulePerformanceSpecification ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29884:1: ( rulePerformanceSpecification )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29884:1: ( rulePerformanceSpecification )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29885:1: rulePerformanceSpecification
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getPerformancePerformanceSpecificationParserRuleCall_9_0()); 
+            pushFollow(FollowSets002.FOLLOW_rulePerformanceSpecification_in_rule__PhysicalNode__PerformanceAssignment_959299);
+            rulePerformanceSpecification();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNodeAccess().getPerformancePerformanceSpecificationParserRuleCall_9_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__PerformanceAssignment_9"
+
+
+    // $ANTLR start "rule__PhysicalNode__InterfacesAssignment_10_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29894:1: rule__PhysicalNode__InterfacesAssignment_10_2 : ( ruleNetworkInterface ) ;
+    public final void rule__PhysicalNode__InterfacesAssignment_10_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29898:1: ( ( ruleNetworkInterface ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29899:1: ( ruleNetworkInterface )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29899:1: ( ruleNetworkInterface )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29900:1: ruleNetworkInterface
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getInterfacesNetworkInterfaceParserRuleCall_10_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleNetworkInterface_in_rule__PhysicalNode__InterfacesAssignment_10_259330);
+            ruleNetworkInterface();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNodeAccess().getInterfacesNetworkInterfaceParserRuleCall_10_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__InterfacesAssignment_10_2"
+
+
+    // $ANTLR start "rule__PhysicalNode__InterfacesAssignment_10_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29909:1: rule__PhysicalNode__InterfacesAssignment_10_3_1 : ( ruleNetworkInterface ) ;
+    public final void rule__PhysicalNode__InterfacesAssignment_10_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29913:1: ( ( ruleNetworkInterface ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29914:1: ( ruleNetworkInterface )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29914:1: ( ruleNetworkInterface )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29915:1: ruleNetworkInterface
+            {
+             before(grammarAccess.getPhysicalNodeAccess().getInterfacesNetworkInterfaceParserRuleCall_10_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleNetworkInterface_in_rule__PhysicalNode__InterfacesAssignment_10_3_159361);
+            ruleNetworkInterface();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNodeAccess().getInterfacesNetworkInterfaceParserRuleCall_10_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNode__InterfacesAssignment_10_3_1"
+
+
+    // $ANTLR start "rule__PhysicalLink__IdAssignment_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29924:1: rule__PhysicalLink__IdAssignment_1 : ( RULE_ID ) ;
+    public final void rule__PhysicalLink__IdAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29928:1: ( ( RULE_ID ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29929:1: ( RULE_ID )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29929:1: ( RULE_ID )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29930:1: RULE_ID
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getIdIDTerminalRuleCall_1_0()); 
+            match(input,RULE_ID,FollowSets002.FOLLOW_RULE_ID_in_rule__PhysicalLink__IdAssignment_159392); 
+             after(grammarAccess.getPhysicalLinkAccess().getIdIDTerminalRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__IdAssignment_1"
+
+
+    // $ANTLR start "rule__PhysicalLink__NameAssignment_4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29939:1: rule__PhysicalLink__NameAssignment_4 : ( ruleEString ) ;
+    public final void rule__PhysicalLink__NameAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29943:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29944:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29944:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29945:1: ruleEString
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getNameEStringParserRuleCall_4_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__PhysicalLink__NameAssignment_459423);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalLinkAccess().getNameEStringParserRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__NameAssignment_4"
+
+
+    // $ANTLR start "rule__PhysicalLink__AlternativeNamesAssignment_5_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29954:1: rule__PhysicalLink__AlternativeNamesAssignment_5_2 : ( ruleEString ) ;
+    public final void rule__PhysicalLink__AlternativeNamesAssignment_5_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29958:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29959:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29959:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29960:1: ruleEString
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__PhysicalLink__AlternativeNamesAssignment_5_259454);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__AlternativeNamesAssignment_5_2"
+
+
+    // $ANTLR start "rule__PhysicalLink__AlternativeNamesAssignment_5_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29969:1: rule__PhysicalLink__AlternativeNamesAssignment_5_3_1 : ( ruleEString ) ;
+    public final void rule__PhysicalLink__AlternativeNamesAssignment_5_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29973:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29974:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29974:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29975:1: ruleEString
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__PhysicalLink__AlternativeNamesAssignment_5_3_159485);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalLinkAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__AlternativeNamesAssignment_5_3_1"
+
+
+    // $ANTLR start "rule__PhysicalLink__ConnectsAssignment_8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29984:1: rule__PhysicalLink__ConnectsAssignment_8 : ( ( ruleEString ) ) ;
+    public final void rule__PhysicalLink__ConnectsAssignment_8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29988:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29989:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29989:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29990:1: ( ruleEString )
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceCrossReference_8_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29991:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:29992:1: ruleEString
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceEStringParserRuleCall_8_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__PhysicalLink__ConnectsAssignment_859520);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceEStringParserRuleCall_8_0_1()); 
+
+            }
+
+             after(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceCrossReference_8_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__ConnectsAssignment_8"
+
+
+    // $ANTLR start "rule__PhysicalLink__ConnectsAssignment_9_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30003:1: rule__PhysicalLink__ConnectsAssignment_9_1 : ( ( ruleEString ) ) ;
+    public final void rule__PhysicalLink__ConnectsAssignment_9_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30007:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30008:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30008:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30009:1: ( ruleEString )
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceCrossReference_9_1_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30010:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30011:1: ruleEString
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceEStringParserRuleCall_9_1_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__PhysicalLink__ConnectsAssignment_9_159559);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceEStringParserRuleCall_9_1_0_1()); 
+
+            }
+
+             after(grammarAccess.getPhysicalLinkAccess().getConnectsPhysicalNetworkInterfaceCrossReference_9_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__ConnectsAssignment_9_1"
+
+
+    // $ANTLR start "rule__PhysicalLink__PerformanceAssignment_12"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30022:1: rule__PhysicalLink__PerformanceAssignment_12 : ( rulePerformanceSpecification ) ;
+    public final void rule__PhysicalLink__PerformanceAssignment_12() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30026:1: ( ( rulePerformanceSpecification ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30027:1: ( rulePerformanceSpecification )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30027:1: ( rulePerformanceSpecification )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30028:1: rulePerformanceSpecification
+            {
+             before(grammarAccess.getPhysicalLinkAccess().getPerformancePerformanceSpecificationParserRuleCall_12_0()); 
+            pushFollow(FollowSets002.FOLLOW_rulePerformanceSpecification_in_rule__PhysicalLink__PerformanceAssignment_1259594);
+            rulePerformanceSpecification();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalLinkAccess().getPerformancePerformanceSpecificationParserRuleCall_12_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalLink__PerformanceAssignment_12"
+
+
+    // $ANTLR start "rule__VirtualLink__IdAssignment_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30037:1: rule__VirtualLink__IdAssignment_1 : ( RULE_ID ) ;
+    public final void rule__VirtualLink__IdAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30041:1: ( ( RULE_ID ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30042:1: ( RULE_ID )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30042:1: ( RULE_ID )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30043:1: RULE_ID
+            {
+             before(grammarAccess.getVirtualLinkAccess().getIdIDTerminalRuleCall_1_0()); 
+            match(input,RULE_ID,FollowSets002.FOLLOW_RULE_ID_in_rule__VirtualLink__IdAssignment_159625); 
+             after(grammarAccess.getVirtualLinkAccess().getIdIDTerminalRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__IdAssignment_1"
+
+
+    // $ANTLR start "rule__VirtualLink__NameAssignment_4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30052:1: rule__VirtualLink__NameAssignment_4 : ( ruleEString ) ;
+    public final void rule__VirtualLink__NameAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30056:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30057:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30057:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30058:1: ruleEString
+            {
+             before(grammarAccess.getVirtualLinkAccess().getNameEStringParserRuleCall_4_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__VirtualLink__NameAssignment_459656);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualLinkAccess().getNameEStringParserRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__NameAssignment_4"
+
+
+    // $ANTLR start "rule__VirtualLink__AlternativeNamesAssignment_5_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30067:1: rule__VirtualLink__AlternativeNamesAssignment_5_2 : ( ruleEString ) ;
+    public final void rule__VirtualLink__AlternativeNamesAssignment_5_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30071:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30072:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30072:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30073:1: ruleEString
+            {
+             before(grammarAccess.getVirtualLinkAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__VirtualLink__AlternativeNamesAssignment_5_259687);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualLinkAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__AlternativeNamesAssignment_5_2"
+
+
+    // $ANTLR start "rule__VirtualLink__AlternativeNamesAssignment_5_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30082:1: rule__VirtualLink__AlternativeNamesAssignment_5_3_1 : ( ruleEString ) ;
+    public final void rule__VirtualLink__AlternativeNamesAssignment_5_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30086:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30087:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30087:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30088:1: ruleEString
+            {
+             before(grammarAccess.getVirtualLinkAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__VirtualLink__AlternativeNamesAssignment_5_3_159718);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualLinkAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__AlternativeNamesAssignment_5_3_1"
+
+
+    // $ANTLR start "rule__VirtualLink__ConnectsAssignment_8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30097:1: rule__VirtualLink__ConnectsAssignment_8 : ( ( ruleEString ) ) ;
+    public final void rule__VirtualLink__ConnectsAssignment_8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30101:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30102:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30102:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30103:1: ( ruleEString )
+            {
+             before(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceCrossReference_8_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30104:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30105:1: ruleEString
+            {
+             before(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceEStringParserRuleCall_8_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__VirtualLink__ConnectsAssignment_859753);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceEStringParserRuleCall_8_0_1()); 
+
+            }
+
+             after(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceCrossReference_8_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__ConnectsAssignment_8"
+
+
+    // $ANTLR start "rule__VirtualLink__ConnectsAssignment_9_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30116:1: rule__VirtualLink__ConnectsAssignment_9_1 : ( ( ruleEString ) ) ;
+    public final void rule__VirtualLink__ConnectsAssignment_9_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30120:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30121:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30121:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30122:1: ( ruleEString )
+            {
+             before(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceCrossReference_9_1_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30123:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30124:1: ruleEString
+            {
+             before(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceEStringParserRuleCall_9_1_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__VirtualLink__ConnectsAssignment_9_159792);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceEStringParserRuleCall_9_1_0_1()); 
+
+            }
+
+             after(grammarAccess.getVirtualLinkAccess().getConnectsNetworkInterfaceCrossReference_9_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__ConnectsAssignment_9_1"
+
+
+    // $ANTLR start "rule__VirtualLink__PerformanceAssignment_12"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30135:1: rule__VirtualLink__PerformanceAssignment_12 : ( rulePerformanceSpecification ) ;
+    public final void rule__VirtualLink__PerformanceAssignment_12() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30139:1: ( ( rulePerformanceSpecification ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30140:1: ( rulePerformanceSpecification )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30140:1: ( rulePerformanceSpecification )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30141:1: rulePerformanceSpecification
+            {
+             before(grammarAccess.getVirtualLinkAccess().getPerformancePerformanceSpecificationParserRuleCall_12_0()); 
+            pushFollow(FollowSets002.FOLLOW_rulePerformanceSpecification_in_rule__VirtualLink__PerformanceAssignment_1259827);
+            rulePerformanceSpecification();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualLinkAccess().getPerformancePerformanceSpecificationParserRuleCall_12_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualLink__PerformanceAssignment_12"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__StacksAssignment_2_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30150:1: rule__ProtocolsRepository__StacksAssignment_2_2 : ( ruleProtocolStack ) ;
+    public final void rule__ProtocolsRepository__StacksAssignment_2_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30154:1: ( ( ruleProtocolStack ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30155:1: ( ruleProtocolStack )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30155:1: ( ruleProtocolStack )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30156:1: ruleProtocolStack
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getStacksProtocolStackParserRuleCall_2_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleProtocolStack_in_rule__ProtocolsRepository__StacksAssignment_2_259858);
+            ruleProtocolStack();
+
+            state._fsp--;
+
+             after(grammarAccess.getProtocolsRepositoryAccess().getStacksProtocolStackParserRuleCall_2_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__StacksAssignment_2_2"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__StacksAssignment_2_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30165:1: rule__ProtocolsRepository__StacksAssignment_2_3_1 : ( ruleProtocolStack ) ;
+    public final void rule__ProtocolsRepository__StacksAssignment_2_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30169:1: ( ( ruleProtocolStack ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30170:1: ( ruleProtocolStack )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30170:1: ( ruleProtocolStack )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30171:1: ruleProtocolStack
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getStacksProtocolStackParserRuleCall_2_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleProtocolStack_in_rule__ProtocolsRepository__StacksAssignment_2_3_159889);
+            ruleProtocolStack();
+
+            state._fsp--;
+
+             after(grammarAccess.getProtocolsRepositoryAccess().getStacksProtocolStackParserRuleCall_2_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__StacksAssignment_2_3_1"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__ProtocolsAssignment_5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30180:1: rule__ProtocolsRepository__ProtocolsAssignment_5 : ( ruleNetworkProtocol ) ;
+    public final void rule__ProtocolsRepository__ProtocolsAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30184:1: ( ( ruleNetworkProtocol ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30185:1: ( ruleNetworkProtocol )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30185:1: ( ruleNetworkProtocol )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30186:1: ruleNetworkProtocol
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getProtocolsNetworkProtocolParserRuleCall_5_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleNetworkProtocol_in_rule__ProtocolsRepository__ProtocolsAssignment_559920);
+            ruleNetworkProtocol();
+
+            state._fsp--;
+
+             after(grammarAccess.getProtocolsRepositoryAccess().getProtocolsNetworkProtocolParserRuleCall_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__ProtocolsAssignment_5"
+
+
+    // $ANTLR start "rule__ProtocolsRepository__ProtocolsAssignment_6_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30195:1: rule__ProtocolsRepository__ProtocolsAssignment_6_1 : ( ruleNetworkProtocol ) ;
+    public final void rule__ProtocolsRepository__ProtocolsAssignment_6_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30199:1: ( ( ruleNetworkProtocol ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30200:1: ( ruleNetworkProtocol )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30200:1: ( ruleNetworkProtocol )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30201:1: ruleNetworkProtocol
+            {
+             before(grammarAccess.getProtocolsRepositoryAccess().getProtocolsNetworkProtocolParserRuleCall_6_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleNetworkProtocol_in_rule__ProtocolsRepository__ProtocolsAssignment_6_159951);
+            ruleNetworkProtocol();
+
+            state._fsp--;
+
+             after(grammarAccess.getProtocolsRepositoryAccess().getProtocolsNetworkProtocolParserRuleCall_6_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolsRepository__ProtocolsAssignment_6_1"
+
+
+    // $ANTLR start "rule__RoutesRepository__RoutesAssignment_3_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30210:1: rule__RoutesRepository__RoutesAssignment_3_2 : ( ruleRoute ) ;
+    public final void rule__RoutesRepository__RoutesAssignment_3_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30214:1: ( ( ruleRoute ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30215:1: ( ruleRoute )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30215:1: ( ruleRoute )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30216:1: ruleRoute
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getRoutesRouteParserRuleCall_3_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleRoute_in_rule__RoutesRepository__RoutesAssignment_3_259982);
+            ruleRoute();
+
+            state._fsp--;
+
+             after(grammarAccess.getRoutesRepositoryAccess().getRoutesRouteParserRuleCall_3_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__RoutesAssignment_3_2"
+
+
+    // $ANTLR start "rule__RoutesRepository__RoutesAssignment_3_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30225:1: rule__RoutesRepository__RoutesAssignment_3_3_1 : ( ruleRoute ) ;
+    public final void rule__RoutesRepository__RoutesAssignment_3_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30229:1: ( ( ruleRoute ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30230:1: ( ruleRoute )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30230:1: ( ruleRoute )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30231:1: ruleRoute
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getRoutesRouteParserRuleCall_3_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleRoute_in_rule__RoutesRepository__RoutesAssignment_3_3_160013);
+            ruleRoute();
+
+            state._fsp--;
+
+             after(grammarAccess.getRoutesRepositoryAccess().getRoutesRouteParserRuleCall_3_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__RoutesAssignment_3_3_1"
+
+
+    // $ANTLR start "rule__RoutesRepository__FlowRoutesAssignment_4_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30240:1: rule__RoutesRepository__FlowRoutesAssignment_4_2 : ( ruleFlowRoute ) ;
+    public final void rule__RoutesRepository__FlowRoutesAssignment_4_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30244:1: ( ( ruleFlowRoute ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30245:1: ( ruleFlowRoute )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30245:1: ( ruleFlowRoute )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30246:1: ruleFlowRoute
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesFlowRouteParserRuleCall_4_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleFlowRoute_in_rule__RoutesRepository__FlowRoutesAssignment_4_260044);
+            ruleFlowRoute();
+
+            state._fsp--;
+
+             after(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesFlowRouteParserRuleCall_4_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__FlowRoutesAssignment_4_2"
+
+
+    // $ANTLR start "rule__RoutesRepository__FlowRoutesAssignment_4_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30255:1: rule__RoutesRepository__FlowRoutesAssignment_4_3_1 : ( ruleFlowRoute ) ;
+    public final void rule__RoutesRepository__FlowRoutesAssignment_4_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30259:1: ( ( ruleFlowRoute ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30260:1: ( ruleFlowRoute )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30260:1: ( ruleFlowRoute )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30261:1: ruleFlowRoute
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesFlowRouteParserRuleCall_4_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleFlowRoute_in_rule__RoutesRepository__FlowRoutesAssignment_4_3_160075);
+            ruleFlowRoute();
+
+            state._fsp--;
+
+             after(grammarAccess.getRoutesRepositoryAccess().getFlowRoutesFlowRouteParserRuleCall_4_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__FlowRoutesAssignment_4_3_1"
+
+
+    // $ANTLR start "rule__RoutesRepository__DirectionsAssignment_5_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30270:1: rule__RoutesRepository__DirectionsAssignment_5_2 : ( ruleDirection ) ;
+    public final void rule__RoutesRepository__DirectionsAssignment_5_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30274:1: ( ( ruleDirection ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30275:1: ( ruleDirection )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30275:1: ( ruleDirection )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30276:1: ruleDirection
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getDirectionsDirectionParserRuleCall_5_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDirection_in_rule__RoutesRepository__DirectionsAssignment_5_260106);
+            ruleDirection();
+
+            state._fsp--;
+
+             after(grammarAccess.getRoutesRepositoryAccess().getDirectionsDirectionParserRuleCall_5_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__DirectionsAssignment_5_2"
+
+
+    // $ANTLR start "rule__RoutesRepository__DirectionsAssignment_5_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30285:1: rule__RoutesRepository__DirectionsAssignment_5_3_1 : ( ruleDirection ) ;
+    public final void rule__RoutesRepository__DirectionsAssignment_5_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30289:1: ( ( ruleDirection ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30290:1: ( ruleDirection )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30290:1: ( ruleDirection )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30291:1: ruleDirection
+            {
+             before(grammarAccess.getRoutesRepositoryAccess().getDirectionsDirectionParserRuleCall_5_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleDirection_in_rule__RoutesRepository__DirectionsAssignment_5_3_160137);
+            ruleDirection();
+
+            state._fsp--;
+
+             after(grammarAccess.getRoutesRepositoryAccess().getDirectionsDirectionParserRuleCall_5_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RoutesRepository__DirectionsAssignment_5_3_1"
+
+
+    // $ANTLR start "rule__ProtocolStack__NameAssignment_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30300:1: rule__ProtocolStack__NameAssignment_1 : ( ruleEString ) ;
+    public final void rule__ProtocolStack__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30304:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30305:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30305:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30306:1: ruleEString
+            {
+             before(grammarAccess.getProtocolStackAccess().getNameEStringParserRuleCall_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__ProtocolStack__NameAssignment_160168);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getProtocolStackAccess().getNameEStringParserRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__NameAssignment_1"
+
+
+    // $ANTLR start "rule__ProtocolStack__AlternativeNamesAssignment_3_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30315:1: rule__ProtocolStack__AlternativeNamesAssignment_3_2 : ( ruleEString ) ;
+    public final void rule__ProtocolStack__AlternativeNamesAssignment_3_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30319:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30320:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30320:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30321:1: ruleEString
+            {
+             before(grammarAccess.getProtocolStackAccess().getAlternativeNamesEStringParserRuleCall_3_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__ProtocolStack__AlternativeNamesAssignment_3_260199);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getProtocolStackAccess().getAlternativeNamesEStringParserRuleCall_3_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__AlternativeNamesAssignment_3_2"
+
+
+    // $ANTLR start "rule__ProtocolStack__AlternativeNamesAssignment_3_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30330:1: rule__ProtocolStack__AlternativeNamesAssignment_3_3_1 : ( ruleEString ) ;
+    public final void rule__ProtocolStack__AlternativeNamesAssignment_3_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30334:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30335:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30335:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30336:1: ruleEString
+            {
+             before(grammarAccess.getProtocolStackAccess().getAlternativeNamesEStringParserRuleCall_3_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__ProtocolStack__AlternativeNamesAssignment_3_3_160230);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getProtocolStackAccess().getAlternativeNamesEStringParserRuleCall_3_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__AlternativeNamesAssignment_3_3_1"
+
+
+    // $ANTLR start "rule__ProtocolStack__LayersAssignment_6"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30345:1: rule__ProtocolStack__LayersAssignment_6 : ( ruleProtocolLayer ) ;
+    public final void rule__ProtocolStack__LayersAssignment_6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30349:1: ( ( ruleProtocolLayer ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30350:1: ( ruleProtocolLayer )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30350:1: ( ruleProtocolLayer )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30351:1: ruleProtocolLayer
+            {
+             before(grammarAccess.getProtocolStackAccess().getLayersProtocolLayerParserRuleCall_6_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleProtocolLayer_in_rule__ProtocolStack__LayersAssignment_660261);
+            ruleProtocolLayer();
+
+            state._fsp--;
+
+             after(grammarAccess.getProtocolStackAccess().getLayersProtocolLayerParserRuleCall_6_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__LayersAssignment_6"
+
+
+    // $ANTLR start "rule__ProtocolStack__LayersAssignment_7_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30360:1: rule__ProtocolStack__LayersAssignment_7_1 : ( ruleProtocolLayer ) ;
+    public final void rule__ProtocolStack__LayersAssignment_7_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30364:1: ( ( ruleProtocolLayer ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30365:1: ( ruleProtocolLayer )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30365:1: ( ruleProtocolLayer )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30366:1: ruleProtocolLayer
+            {
+             before(grammarAccess.getProtocolStackAccess().getLayersProtocolLayerParserRuleCall_7_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleProtocolLayer_in_rule__ProtocolStack__LayersAssignment_7_160292);
+            ruleProtocolLayer();
+
+            state._fsp--;
+
+             after(grammarAccess.getProtocolStackAccess().getLayersProtocolLayerParserRuleCall_7_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolStack__LayersAssignment_7_1"
+
+
+    // $ANTLR start "rule__ProtocolLayer__NameAssignment_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30375:1: rule__ProtocolLayer__NameAssignment_1 : ( ruleEString ) ;
+    public final void rule__ProtocolLayer__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30379:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30380:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30380:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30381:1: ruleEString
+            {
+             before(grammarAccess.getProtocolLayerAccess().getNameEStringParserRuleCall_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__ProtocolLayer__NameAssignment_160323);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getProtocolLayerAccess().getNameEStringParserRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__NameAssignment_1"
+
+
+    // $ANTLR start "rule__ProtocolLayer__AlternativeNamesAssignment_3_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30390:1: rule__ProtocolLayer__AlternativeNamesAssignment_3_2 : ( ruleEString ) ;
+    public final void rule__ProtocolLayer__AlternativeNamesAssignment_3_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30394:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30395:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30395:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30396:1: ruleEString
+            {
+             before(grammarAccess.getProtocolLayerAccess().getAlternativeNamesEStringParserRuleCall_3_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__ProtocolLayer__AlternativeNamesAssignment_3_260354);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getProtocolLayerAccess().getAlternativeNamesEStringParserRuleCall_3_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__AlternativeNamesAssignment_3_2"
+
+
+    // $ANTLR start "rule__ProtocolLayer__AlternativeNamesAssignment_3_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30405:1: rule__ProtocolLayer__AlternativeNamesAssignment_3_3_1 : ( ruleEString ) ;
+    public final void rule__ProtocolLayer__AlternativeNamesAssignment_3_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30409:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30410:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30410:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30411:1: ruleEString
+            {
+             before(grammarAccess.getProtocolLayerAccess().getAlternativeNamesEStringParserRuleCall_3_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__ProtocolLayer__AlternativeNamesAssignment_3_3_160385);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getProtocolLayerAccess().getAlternativeNamesEStringParserRuleCall_3_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__AlternativeNamesAssignment_3_3_1"
+
+
+    // $ANTLR start "rule__ProtocolLayer__ProtocolAssignment_5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30420:1: rule__ProtocolLayer__ProtocolAssignment_5 : ( ( ruleEString ) ) ;
+    public final void rule__ProtocolLayer__ProtocolAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30424:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30425:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30425:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30426:1: ( ruleEString )
+            {
+             before(grammarAccess.getProtocolLayerAccess().getProtocolNetworkProtocolCrossReference_5_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30427:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30428:1: ruleEString
+            {
+             before(grammarAccess.getProtocolLayerAccess().getProtocolNetworkProtocolEStringParserRuleCall_5_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__ProtocolLayer__ProtocolAssignment_560420);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getProtocolLayerAccess().getProtocolNetworkProtocolEStringParserRuleCall_5_0_1()); 
+
+            }
+
+             after(grammarAccess.getProtocolLayerAccess().getProtocolNetworkProtocolCrossReference_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__ProtocolAssignment_5"
+
+
+    // $ANTLR start "rule__ProtocolLayer__IsCarriedByAssignment_6_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30439:1: rule__ProtocolLayer__IsCarriedByAssignment_6_1 : ( ( ruleEString ) ) ;
+    public final void rule__ProtocolLayer__IsCarriedByAssignment_6_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30443:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30444:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30444:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30445:1: ( ruleEString )
+            {
+             before(grammarAccess.getProtocolLayerAccess().getIsCarriedByProtocolLayerCrossReference_6_1_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30446:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30447:1: ruleEString
+            {
+             before(grammarAccess.getProtocolLayerAccess().getIsCarriedByProtocolLayerEStringParserRuleCall_6_1_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__ProtocolLayer__IsCarriedByAssignment_6_160459);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getProtocolLayerAccess().getIsCarriedByProtocolLayerEStringParserRuleCall_6_1_0_1()); 
+
+            }
+
+             after(grammarAccess.getProtocolLayerAccess().getIsCarriedByProtocolLayerCrossReference_6_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__IsCarriedByAssignment_6_1"
+
+
+    // $ANTLR start "rule__ProtocolLayer__CarriesAssignment_7_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30458:1: rule__ProtocolLayer__CarriesAssignment_7_1 : ( ( ruleEString ) ) ;
+    public final void rule__ProtocolLayer__CarriesAssignment_7_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30462:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30463:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30463:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30464:1: ( ruleEString )
+            {
+             before(grammarAccess.getProtocolLayerAccess().getCarriesProtocolLayerCrossReference_7_1_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30465:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30466:1: ruleEString
+            {
+             before(grammarAccess.getProtocolLayerAccess().getCarriesProtocolLayerEStringParserRuleCall_7_1_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__ProtocolLayer__CarriesAssignment_7_160498);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getProtocolLayerAccess().getCarriesProtocolLayerEStringParserRuleCall_7_1_0_1()); 
+
+            }
+
+             after(grammarAccess.getProtocolLayerAccess().getCarriesProtocolLayerCrossReference_7_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ProtocolLayer__CarriesAssignment_7_1"
+
+
+    // $ANTLR start "rule__Route__IdAssignment_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30477:1: rule__Route__IdAssignment_1 : ( RULE_ID ) ;
+    public final void rule__Route__IdAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30481:1: ( ( RULE_ID ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30482:1: ( RULE_ID )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30482:1: ( RULE_ID )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30483:1: RULE_ID
+            {
+             before(grammarAccess.getRouteAccess().getIdIDTerminalRuleCall_1_0()); 
+            match(input,RULE_ID,FollowSets002.FOLLOW_RULE_ID_in_rule__Route__IdAssignment_160533); 
+             after(grammarAccess.getRouteAccess().getIdIDTerminalRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__IdAssignment_1"
+
+
+    // $ANTLR start "rule__Route__NameAssignment_4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30492:1: rule__Route__NameAssignment_4 : ( ruleEString ) ;
+    public final void rule__Route__NameAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30496:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30497:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30497:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30498:1: ruleEString
+            {
+             before(grammarAccess.getRouteAccess().getNameEStringParserRuleCall_4_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__Route__NameAssignment_460564);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getRouteAccess().getNameEStringParserRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__NameAssignment_4"
+
+
+    // $ANTLR start "rule__Route__AlternativeNamesAssignment_5_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30507:1: rule__Route__AlternativeNamesAssignment_5_2 : ( ruleEString ) ;
+    public final void rule__Route__AlternativeNamesAssignment_5_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30511:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30512:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30512:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30513:1: ruleEString
+            {
+             before(grammarAccess.getRouteAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__Route__AlternativeNamesAssignment_5_260595);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getRouteAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__AlternativeNamesAssignment_5_2"
+
+
+    // $ANTLR start "rule__Route__AlternativeNamesAssignment_5_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30522:1: rule__Route__AlternativeNamesAssignment_5_3_1 : ( ruleEString ) ;
+    public final void rule__Route__AlternativeNamesAssignment_5_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30526:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30527:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30527:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30528:1: ruleEString
+            {
+             before(grammarAccess.getRouteAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__Route__AlternativeNamesAssignment_5_3_160626);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getRouteAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__AlternativeNamesAssignment_5_3_1"
+
+
+    // $ANTLR start "rule__Route__NumHopsAssignment_6_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30537:1: rule__Route__NumHopsAssignment_6_1 : ( ruleEIntegerObject ) ;
+    public final void rule__Route__NumHopsAssignment_6_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30541:1: ( ( ruleEIntegerObject ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30542:1: ( ruleEIntegerObject )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30542:1: ( ruleEIntegerObject )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30543:1: ruleEIntegerObject
+            {
+             before(grammarAccess.getRouteAccess().getNumHopsEIntegerObjectParserRuleCall_6_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEIntegerObject_in_rule__Route__NumHopsAssignment_6_160657);
+            ruleEIntegerObject();
+
+            state._fsp--;
+
+             after(grammarAccess.getRouteAccess().getNumHopsEIntegerObjectParserRuleCall_6_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__NumHopsAssignment_6_1"
+
+
+    // $ANTLR start "rule__Route__StartAssignment_8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30552:1: rule__Route__StartAssignment_8 : ( ( ruleEString ) ) ;
+    public final void rule__Route__StartAssignment_8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30556:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30557:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30557:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30558:1: ( ruleEString )
+            {
+             before(grammarAccess.getRouteAccess().getStartNetworkInterfaceCrossReference_8_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30559:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30560:1: ruleEString
+            {
+             before(grammarAccess.getRouteAccess().getStartNetworkInterfaceEStringParserRuleCall_8_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__Route__StartAssignment_860692);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getRouteAccess().getStartNetworkInterfaceEStringParserRuleCall_8_0_1()); 
+
+            }
+
+             after(grammarAccess.getRouteAccess().getStartNetworkInterfaceCrossReference_8_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__StartAssignment_8"
+
+
+    // $ANTLR start "rule__Route__EndAssignment_10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30571:1: rule__Route__EndAssignment_10 : ( ( ruleEString ) ) ;
+    public final void rule__Route__EndAssignment_10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30575:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30576:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30576:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30577:1: ( ruleEString )
+            {
+             before(grammarAccess.getRouteAccess().getEndNetworkInterfaceCrossReference_10_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30578:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30579:1: ruleEString
+            {
+             before(grammarAccess.getRouteAccess().getEndNetworkInterfaceEStringParserRuleCall_10_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__Route__EndAssignment_1060731);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getRouteAccess().getEndNetworkInterfaceEStringParserRuleCall_10_0_1()); 
+
+            }
+
+             after(grammarAccess.getRouteAccess().getEndNetworkInterfaceCrossReference_10_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__EndAssignment_10"
+
+
+    // $ANTLR start "rule__Route__HopsAssignment_11_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30590:1: rule__Route__HopsAssignment_11_1 : ( ruleHop ) ;
+    public final void rule__Route__HopsAssignment_11_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30594:1: ( ( ruleHop ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30595:1: ( ruleHop )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30595:1: ( ruleHop )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30596:1: ruleHop
+            {
+             before(grammarAccess.getRouteAccess().getHopsHopParserRuleCall_11_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleHop_in_rule__Route__HopsAssignment_11_160766);
+            ruleHop();
+
+            state._fsp--;
+
+             after(grammarAccess.getRouteAccess().getHopsHopParserRuleCall_11_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Route__HopsAssignment_11_1"
+
+
+    // $ANTLR start "rule__FlowRoute__IdAssignment_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30605:1: rule__FlowRoute__IdAssignment_1 : ( RULE_ID ) ;
+    public final void rule__FlowRoute__IdAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30609:1: ( ( RULE_ID ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30610:1: ( RULE_ID )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30610:1: ( RULE_ID )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30611:1: RULE_ID
+            {
+             before(grammarAccess.getFlowRouteAccess().getIdIDTerminalRuleCall_1_0()); 
+            match(input,RULE_ID,FollowSets002.FOLLOW_RULE_ID_in_rule__FlowRoute__IdAssignment_160797); 
+             after(grammarAccess.getFlowRouteAccess().getIdIDTerminalRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__IdAssignment_1"
+
+
+    // $ANTLR start "rule__FlowRoute__NameAssignment_4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30620:1: rule__FlowRoute__NameAssignment_4 : ( ruleEString ) ;
+    public final void rule__FlowRoute__NameAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30624:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30625:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30625:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30626:1: ruleEString
+            {
+             before(grammarAccess.getFlowRouteAccess().getNameEStringParserRuleCall_4_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__FlowRoute__NameAssignment_460828);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getFlowRouteAccess().getNameEStringParserRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__NameAssignment_4"
+
+
+    // $ANTLR start "rule__FlowRoute__AlternativeNamesAssignment_5_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30635:1: rule__FlowRoute__AlternativeNamesAssignment_5_2 : ( ruleEString ) ;
+    public final void rule__FlowRoute__AlternativeNamesAssignment_5_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30639:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30640:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30640:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30641:1: ruleEString
+            {
+             before(grammarAccess.getFlowRouteAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__FlowRoute__AlternativeNamesAssignment_5_260859);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getFlowRouteAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__AlternativeNamesAssignment_5_2"
+
+
+    // $ANTLR start "rule__FlowRoute__AlternativeNamesAssignment_5_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30650:1: rule__FlowRoute__AlternativeNamesAssignment_5_3_1 : ( ruleEString ) ;
+    public final void rule__FlowRoute__AlternativeNamesAssignment_5_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30654:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30655:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30655:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30656:1: ruleEString
+            {
+             before(grammarAccess.getFlowRouteAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__FlowRoute__AlternativeNamesAssignment_5_3_160890);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getFlowRouteAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__AlternativeNamesAssignment_5_3_1"
+
+
+    // $ANTLR start "rule__FlowRoute__NumHopsAssignment_6_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30665:1: rule__FlowRoute__NumHopsAssignment_6_1 : ( ruleEIntegerObject ) ;
+    public final void rule__FlowRoute__NumHopsAssignment_6_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30669:1: ( ( ruleEIntegerObject ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30670:1: ( ruleEIntegerObject )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30670:1: ( ruleEIntegerObject )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30671:1: ruleEIntegerObject
+            {
+             before(grammarAccess.getFlowRouteAccess().getNumHopsEIntegerObjectParserRuleCall_6_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEIntegerObject_in_rule__FlowRoute__NumHopsAssignment_6_160921);
+            ruleEIntegerObject();
+
+            state._fsp--;
+
+             after(grammarAccess.getFlowRouteAccess().getNumHopsEIntegerObjectParserRuleCall_6_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__NumHopsAssignment_6_1"
+
+
+    // $ANTLR start "rule__FlowRoute__FlowAssignment_8"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30680:1: rule__FlowRoute__FlowAssignment_8 : ( ( ruleEString ) ) ;
+    public final void rule__FlowRoute__FlowAssignment_8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30684:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30685:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30685:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30686:1: ( ruleEString )
+            {
+             before(grammarAccess.getFlowRouteAccess().getFlowFlowCrossReference_8_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30687:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30688:1: ruleEString
+            {
+             before(grammarAccess.getFlowRouteAccess().getFlowFlowEStringParserRuleCall_8_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__FlowRoute__FlowAssignment_860956);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getFlowRouteAccess().getFlowFlowEStringParserRuleCall_8_0_1()); 
+
+            }
+
+             after(grammarAccess.getFlowRouteAccess().getFlowFlowCrossReference_8_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__FlowAssignment_8"
+
+
+    // $ANTLR start "rule__FlowRoute__StartAssignment_10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30699:1: rule__FlowRoute__StartAssignment_10 : ( ( ruleEString ) ) ;
+    public final void rule__FlowRoute__StartAssignment_10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30703:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30704:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30704:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30705:1: ( ruleEString )
+            {
+             before(grammarAccess.getFlowRouteAccess().getStartNetworkInterfaceCrossReference_10_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30706:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30707:1: ruleEString
+            {
+             before(grammarAccess.getFlowRouteAccess().getStartNetworkInterfaceEStringParserRuleCall_10_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__FlowRoute__StartAssignment_1060995);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getFlowRouteAccess().getStartNetworkInterfaceEStringParserRuleCall_10_0_1()); 
+
+            }
+
+             after(grammarAccess.getFlowRouteAccess().getStartNetworkInterfaceCrossReference_10_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__StartAssignment_10"
+
+
+    // $ANTLR start "rule__FlowRoute__EndAssignment_12"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30718:1: rule__FlowRoute__EndAssignment_12 : ( ( ruleEString ) ) ;
+    public final void rule__FlowRoute__EndAssignment_12() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30722:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30723:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30723:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30724:1: ( ruleEString )
+            {
+             before(grammarAccess.getFlowRouteAccess().getEndNetworkInterfaceCrossReference_12_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30725:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30726:1: ruleEString
+            {
+             before(grammarAccess.getFlowRouteAccess().getEndNetworkInterfaceEStringParserRuleCall_12_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__FlowRoute__EndAssignment_1261034);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getFlowRouteAccess().getEndNetworkInterfaceEStringParserRuleCall_12_0_1()); 
+
+            }
+
+             after(grammarAccess.getFlowRouteAccess().getEndNetworkInterfaceCrossReference_12_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__EndAssignment_12"
+
+
+    // $ANTLR start "rule__FlowRoute__HopsAssignment_13_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30737:1: rule__FlowRoute__HopsAssignment_13_1 : ( ruleHop ) ;
+    public final void rule__FlowRoute__HopsAssignment_13_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30741:1: ( ( ruleHop ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30742:1: ( ruleHop )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30742:1: ( ruleHop )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30743:1: ruleHop
+            {
+             before(grammarAccess.getFlowRouteAccess().getHopsHopParserRuleCall_13_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleHop_in_rule__FlowRoute__HopsAssignment_13_161069);
+            ruleHop();
+
+            state._fsp--;
+
+             after(grammarAccess.getFlowRouteAccess().getHopsHopParserRuleCall_13_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FlowRoute__HopsAssignment_13_1"
+
+
+    // $ANTLR start "rule__Direction__IsDefaultAssignment_0"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30752:1: rule__Direction__IsDefaultAssignment_0 : ( ( 'isDefault' ) ) ;
+    public final void rule__Direction__IsDefaultAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30756:1: ( ( ( 'isDefault' ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30757:1: ( ( 'isDefault' ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30757:1: ( ( 'isDefault' ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30758:1: ( 'isDefault' )
+            {
+             before(grammarAccess.getDirectionAccess().getIsDefaultIsDefaultKeyword_0_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30759:1: ( 'isDefault' )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30760:1: 'isDefault'
+            {
+             before(grammarAccess.getDirectionAccess().getIsDefaultIsDefaultKeyword_0_0()); 
+            match(input,161,FollowSets002.FOLLOW_161_in_rule__Direction__IsDefaultAssignment_061105); 
+             after(grammarAccess.getDirectionAccess().getIsDefaultIsDefaultKeyword_0_0()); 
+
+            }
+
+             after(grammarAccess.getDirectionAccess().getIsDefaultIsDefaultKeyword_0_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__IsDefaultAssignment_0"
+
+
+    // $ANTLR start "rule__Direction__IdAssignment_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30775:1: rule__Direction__IdAssignment_2 : ( RULE_ID ) ;
+    public final void rule__Direction__IdAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30779:1: ( ( RULE_ID ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30780:1: ( RULE_ID )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30780:1: ( RULE_ID )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30781:1: RULE_ID
+            {
+             before(grammarAccess.getDirectionAccess().getIdIDTerminalRuleCall_2_0()); 
+            match(input,RULE_ID,FollowSets002.FOLLOW_RULE_ID_in_rule__Direction__IdAssignment_261144); 
+             after(grammarAccess.getDirectionAccess().getIdIDTerminalRuleCall_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__IdAssignment_2"
+
+
+    // $ANTLR start "rule__Direction__NameAssignment_5"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30790:1: rule__Direction__NameAssignment_5 : ( ruleEString ) ;
+    public final void rule__Direction__NameAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30794:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30795:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30795:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30796:1: ruleEString
+            {
+             before(grammarAccess.getDirectionAccess().getNameEStringParserRuleCall_5_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__Direction__NameAssignment_561175);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getDirectionAccess().getNameEStringParserRuleCall_5_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__NameAssignment_5"
+
+
+    // $ANTLR start "rule__Direction__AlternativeNamesAssignment_6_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30805:1: rule__Direction__AlternativeNamesAssignment_6_2 : ( ruleEString ) ;
+    public final void rule__Direction__AlternativeNamesAssignment_6_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30809:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30810:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30810:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30811:1: ruleEString
+            {
+             before(grammarAccess.getDirectionAccess().getAlternativeNamesEStringParserRuleCall_6_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__Direction__AlternativeNamesAssignment_6_261206);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getDirectionAccess().getAlternativeNamesEStringParserRuleCall_6_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__AlternativeNamesAssignment_6_2"
+
+
+    // $ANTLR start "rule__Direction__AlternativeNamesAssignment_6_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30820:1: rule__Direction__AlternativeNamesAssignment_6_3_1 : ( ruleEString ) ;
+    public final void rule__Direction__AlternativeNamesAssignment_6_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30824:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30825:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30825:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30826:1: ruleEString
+            {
+             before(grammarAccess.getDirectionAccess().getAlternativeNamesEStringParserRuleCall_6_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__Direction__AlternativeNamesAssignment_6_3_161237);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getDirectionAccess().getAlternativeNamesEStringParserRuleCall_6_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__AlternativeNamesAssignment_6_3_1"
+
+
+    // $ANTLR start "rule__Direction__DistanceAssignment_7_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30835:1: rule__Direction__DistanceAssignment_7_1 : ( ruleELong ) ;
+    public final void rule__Direction__DistanceAssignment_7_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30839:1: ( ( ruleELong ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30840:1: ( ruleELong )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30840:1: ( ruleELong )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30841:1: ruleELong
+            {
+             before(grammarAccess.getDirectionAccess().getDistanceELongParserRuleCall_7_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleELong_in_rule__Direction__DistanceAssignment_7_161268);
+            ruleELong();
+
+            state._fsp--;
+
+             after(grammarAccess.getDirectionAccess().getDistanceELongParserRuleCall_7_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__DistanceAssignment_7_1"
+
+
+    // $ANTLR start "rule__Direction__OnNodeAssignment_9"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30850:1: rule__Direction__OnNodeAssignment_9 : ( ( ruleEString ) ) ;
+    public final void rule__Direction__OnNodeAssignment_9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30854:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30855:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30855:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30856:1: ( ruleEString )
+            {
+             before(grammarAccess.getDirectionAccess().getOnNodeNodeCrossReference_9_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30857:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30858:1: ruleEString
+            {
+             before(grammarAccess.getDirectionAccess().getOnNodeNodeEStringParserRuleCall_9_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__Direction__OnNodeAssignment_961303);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getDirectionAccess().getOnNodeNodeEStringParserRuleCall_9_0_1()); 
+
+            }
+
+             after(grammarAccess.getDirectionAccess().getOnNodeNodeCrossReference_9_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__OnNodeAssignment_9"
+
+
+    // $ANTLR start "rule__Direction__FlowAssignment_10_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30869:1: rule__Direction__FlowAssignment_10_1 : ( ( ruleEString ) ) ;
+    public final void rule__Direction__FlowAssignment_10_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30873:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30874:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30874:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30875:1: ( ruleEString )
+            {
+             before(grammarAccess.getDirectionAccess().getFlowFlowCrossReference_10_1_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30876:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30877:1: ruleEString
+            {
+             before(grammarAccess.getDirectionAccess().getFlowFlowEStringParserRuleCall_10_1_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__Direction__FlowAssignment_10_161342);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getDirectionAccess().getFlowFlowEStringParserRuleCall_10_1_0_1()); 
+
+            }
+
+             after(grammarAccess.getDirectionAccess().getFlowFlowCrossReference_10_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__FlowAssignment_10_1"
+
+
+    // $ANTLR start "rule__Direction__ViaAssignment_12"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30888:1: rule__Direction__ViaAssignment_12 : ( ( ruleEString ) ) ;
+    public final void rule__Direction__ViaAssignment_12() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30892:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30893:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30893:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30894:1: ( ruleEString )
+            {
+             before(grammarAccess.getDirectionAccess().getViaNetworkInterfaceCrossReference_12_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30895:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30896:1: ruleEString
+            {
+             before(grammarAccess.getDirectionAccess().getViaNetworkInterfaceEStringParserRuleCall_12_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__Direction__ViaAssignment_1261381);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getDirectionAccess().getViaNetworkInterfaceEStringParserRuleCall_12_0_1()); 
+
+            }
+
+             after(grammarAccess.getDirectionAccess().getViaNetworkInterfaceCrossReference_12_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Direction__ViaAssignment_12"
+
+
+    // $ANTLR start "rule__Hop__InterfacerefAssignment_3"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30907:1: rule__Hop__InterfacerefAssignment_3 : ( ( ruleEString ) ) ;
+    public final void rule__Hop__InterfacerefAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30911:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30912:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30912:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30913:1: ( ruleEString )
+            {
+             before(grammarAccess.getHopAccess().getInterfacerefNetworkInterfaceCrossReference_3_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30914:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30915:1: ruleEString
+            {
+             before(grammarAccess.getHopAccess().getInterfacerefNetworkInterfaceEStringParserRuleCall_3_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__Hop__InterfacerefAssignment_361420);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getHopAccess().getInterfacerefNetworkInterfaceEStringParserRuleCall_3_0_1()); 
+
+            }
+
+             after(grammarAccess.getHopAccess().getInterfacerefNetworkInterfaceCrossReference_3_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Hop__InterfacerefAssignment_3"
+
+
+    // $ANTLR start "rule__Hop__NextHopAssignment_4_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30926:1: rule__Hop__NextHopAssignment_4_1 : ( ruleHop ) ;
+    public final void rule__Hop__NextHopAssignment_4_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30930:1: ( ( ruleHop ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30931:1: ( ruleHop )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30931:1: ( ruleHop )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30932:1: ruleHop
+            {
+             before(grammarAccess.getHopAccess().getNextHopHopParserRuleCall_4_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleHop_in_rule__Hop__NextHopAssignment_4_161455);
+            ruleHop();
+
+            state._fsp--;
+
+             after(grammarAccess.getHopAccess().getNextHopHopParserRuleCall_4_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Hop__NextHopAssignment_4_1"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__IdAssignment_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30941:1: rule__PhysicalNetworkInterface__IdAssignment_1 : ( RULE_ID ) ;
+    public final void rule__PhysicalNetworkInterface__IdAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30945:1: ( ( RULE_ID ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30946:1: ( RULE_ID )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30946:1: ( RULE_ID )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30947:1: RULE_ID
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getIdIDTerminalRuleCall_1_0()); 
+            match(input,RULE_ID,FollowSets002.FOLLOW_RULE_ID_in_rule__PhysicalNetworkInterface__IdAssignment_161486); 
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getIdIDTerminalRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__IdAssignment_1"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__NameAssignment_4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30956:1: rule__PhysicalNetworkInterface__NameAssignment_4 : ( ruleEString ) ;
+    public final void rule__PhysicalNetworkInterface__NameAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30960:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30961:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30961:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30962:1: ruleEString
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getNameEStringParserRuleCall_4_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__PhysicalNetworkInterface__NameAssignment_461517);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getNameEStringParserRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__NameAssignment_4"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30971:1: rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_2 : ( ruleEString ) ;
+    public final void rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30975:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30976:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30976:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30977:1: ruleEString
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_261548);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_2"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30986:1: rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_1 : ( ruleEString ) ;
+    public final void rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30990:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30991:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30991:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:30992:1: ruleEString
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_161579);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_1"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31001:1: rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_7 : ( ( ruleEString ) ) ;
+    public final void rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31005:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31006:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31006:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31007:1: ( ruleEString )
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackProtocolStackCrossReference_7_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31008:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31009:1: ruleEString
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackProtocolStackEStringParserRuleCall_7_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_761614);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackProtocolStackEStringParserRuleCall_7_0_1()); 
+
+            }
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getUsedProtocolStackProtocolStackCrossReference_7_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_7"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__AddressesAssignment_8_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31020:1: rule__PhysicalNetworkInterface__AddressesAssignment_8_2 : ( ruleEntityAddress ) ;
+    public final void rule__PhysicalNetworkInterface__AddressesAssignment_8_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31024:1: ( ( ruleEntityAddress ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31025:1: ( ruleEntityAddress )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31025:1: ( ruleEntityAddress )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31026:1: ruleEntityAddress
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEntityAddress_in_rule__PhysicalNetworkInterface__AddressesAssignment_8_261649);
+            ruleEntityAddress();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__AddressesAssignment_8_2"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__AddressesAssignment_8_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31035:1: rule__PhysicalNetworkInterface__AddressesAssignment_8_3_1 : ( ruleEntityAddress ) ;
+    public final void rule__PhysicalNetworkInterface__AddressesAssignment_8_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31039:1: ( ( ruleEntityAddress ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31040:1: ( ruleEntityAddress )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31040:1: ( ruleEntityAddress )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31041:1: ruleEntityAddress
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEntityAddress_in_rule__PhysicalNetworkInterface__AddressesAssignment_8_3_161680);
+            ruleEntityAddress();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__AddressesAssignment_8_3_1"
+
+
+    // $ANTLR start "rule__PhysicalNetworkInterface__PerformanceAssignment_10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31050:1: rule__PhysicalNetworkInterface__PerformanceAssignment_10 : ( rulePhysicalNetworkInterfacePerfSpec ) ;
+    public final void rule__PhysicalNetworkInterface__PerformanceAssignment_10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31054:1: ( ( rulePhysicalNetworkInterfacePerfSpec ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31055:1: ( rulePhysicalNetworkInterfacePerfSpec )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31055:1: ( rulePhysicalNetworkInterfacePerfSpec )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31056:1: rulePhysicalNetworkInterfacePerfSpec
+            {
+             before(grammarAccess.getPhysicalNetworkInterfaceAccess().getPerformancePhysicalNetworkInterfacePerfSpecParserRuleCall_10_0()); 
+            pushFollow(FollowSets002.FOLLOW_rulePhysicalNetworkInterfacePerfSpec_in_rule__PhysicalNetworkInterface__PerformanceAssignment_1061711);
+            rulePhysicalNetworkInterfacePerfSpec();
+
+            state._fsp--;
+
+             after(grammarAccess.getPhysicalNetworkInterfaceAccess().getPerformancePhysicalNetworkInterfacePerfSpecParserRuleCall_10_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__PhysicalNetworkInterface__PerformanceAssignment_10"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__IdAssignment_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31065:1: rule__VirtualNetworkInterface__IdAssignment_1 : ( RULE_ID ) ;
+    public final void rule__VirtualNetworkInterface__IdAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31069:1: ( ( RULE_ID ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31070:1: ( RULE_ID )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31070:1: ( RULE_ID )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31071:1: RULE_ID
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getIdIDTerminalRuleCall_1_0()); 
+            match(input,RULE_ID,FollowSets002.FOLLOW_RULE_ID_in_rule__VirtualNetworkInterface__IdAssignment_161742); 
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getIdIDTerminalRuleCall_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__IdAssignment_1"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__NameAssignment_4"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31080:1: rule__VirtualNetworkInterface__NameAssignment_4 : ( ruleEString ) ;
+    public final void rule__VirtualNetworkInterface__NameAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31084:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31085:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31085:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31086:1: ruleEString
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getNameEStringParserRuleCall_4_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__VirtualNetworkInterface__NameAssignment_461773);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getNameEStringParserRuleCall_4_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__NameAssignment_4"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31095:1: rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_2 : ( ruleEString ) ;
+    public final void rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31099:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31100:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31100:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31101:1: ruleEString
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_261804);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_2"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31110:1: rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_1 : ( ruleEString ) ;
+    public final void rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31114:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31115:1: ( ruleEString )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31115:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31116:1: ruleEString
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_161835);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getAlternativeNamesEStringParserRuleCall_5_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_1"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__UsedProtocolStackAssignment_7"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31125:1: rule__VirtualNetworkInterface__UsedProtocolStackAssignment_7 : ( ( ruleEString ) ) ;
+    public final void rule__VirtualNetworkInterface__UsedProtocolStackAssignment_7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31129:1: ( ( ( ruleEString ) ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31130:1: ( ( ruleEString ) )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31130:1: ( ( ruleEString ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31131:1: ( ruleEString )
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackProtocolStackCrossReference_7_0()); 
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31132:1: ( ruleEString )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31133:1: ruleEString
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackProtocolStackEStringParserRuleCall_7_0_1()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEString_in_rule__VirtualNetworkInterface__UsedProtocolStackAssignment_761870);
+            ruleEString();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackProtocolStackEStringParserRuleCall_7_0_1()); 
+
+            }
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getUsedProtocolStackProtocolStackCrossReference_7_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__UsedProtocolStackAssignment_7"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__AddressesAssignment_8_2"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31144:1: rule__VirtualNetworkInterface__AddressesAssignment_8_2 : ( ruleEntityAddress ) ;
+    public final void rule__VirtualNetworkInterface__AddressesAssignment_8_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31148:1: ( ( ruleEntityAddress ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31149:1: ( ruleEntityAddress )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31149:1: ( ruleEntityAddress )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31150:1: ruleEntityAddress
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_2_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEntityAddress_in_rule__VirtualNetworkInterface__AddressesAssignment_8_261905);
+            ruleEntityAddress();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_2_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__AddressesAssignment_8_2"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__AddressesAssignment_8_3_1"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31159:1: rule__VirtualNetworkInterface__AddressesAssignment_8_3_1 : ( ruleEntityAddress ) ;
+    public final void rule__VirtualNetworkInterface__AddressesAssignment_8_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31163:1: ( ( ruleEntityAddress ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31164:1: ( ruleEntityAddress )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31164:1: ( ruleEntityAddress )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31165:1: ruleEntityAddress
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_3_1_0()); 
+            pushFollow(FollowSets002.FOLLOW_ruleEntityAddress_in_rule__VirtualNetworkInterface__AddressesAssignment_8_3_161936);
+            ruleEntityAddress();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getAddressesEntityAddressParserRuleCall_8_3_1_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__AddressesAssignment_8_3_1"
+
+
+    // $ANTLR start "rule__VirtualNetworkInterface__PerformanceAssignment_10"
+    // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31174:1: rule__VirtualNetworkInterface__PerformanceAssignment_10 : ( rulePerformanceSpecification ) ;
+    public final void rule__VirtualNetworkInterface__PerformanceAssignment_10() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31178:1: ( ( rulePerformanceSpecification ) )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31179:1: ( rulePerformanceSpecification )
+            {
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31179:1: ( rulePerformanceSpecification )
+            // ../tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/contentassist/antlr/internal/InternalDNIText.g:31180:1: rulePerformanceSpecification
+            {
+             before(grammarAccess.getVirtualNetworkInterfaceAccess().getPerformancePerformanceSpecificationParserRuleCall_10_0()); 
+            pushFollow(FollowSets002.FOLLOW_rulePerformanceSpecification_in_rule__VirtualNetworkInterface__PerformanceAssignment_1061967);
+            rulePerformanceSpecification();
+
+            state._fsp--;
+
+             after(grammarAccess.getVirtualNetworkInterfaceAccess().getPerformancePerformanceSpecificationParserRuleCall_10_0()); 
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VirtualNetworkInterface__PerformanceAssignment_10"
+
+    // Delegated rules
+
+
+ 
+
+    
+    private static class FollowSets000 {
+        public static final BitSet FOLLOW_ruleNetworkInfrastructure_in_entryRuleNetworkInfrastructure61 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNetworkInfrastructure68 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__0_in_ruleNetworkInfrastructure94 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFlow_in_entryRuleFlow121 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFlow128 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Flow__Alternatives_in_ruleFlow154 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNode_in_entryRuleNode181 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNode188 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Node__Alternatives_in_ruleNode214 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLink_in_entryRuleLink241 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLink248 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Link__Alternatives_in_ruleLink274 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_entryRuleDependency301 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDependency308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Dependency__Alternatives_in_ruleDependency334 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDNIUnit_in_entryRuleDNIUnit361 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDNIUnit368 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSpeedUnit_in_ruleDNIUnit394 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFunction_in_entryRuleFunction420 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFunction427 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Function__Alternatives_in_ruleFunction453 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleWorkload_in_entryRuleWorkload480 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleWorkload487 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleGenericWorkload_in_ruleWorkload513 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAbstractAction_in_entryRuleAbstractAction539 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleAbstractAction546 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AbstractAction__Alternatives_in_ruleAbstractAction572 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePerformanceSpecification_in_entryRulePerformanceSpecification599 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePerformanceSpecification606 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PerformanceSpecification__Alternatives_in_rulePerformanceSpecification632 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNetworkInterfacePerfSpec_in_entryRuleNetworkInterfacePerfSpec659 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNetworkInterfacePerfSpec666 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInterfacePerfSpec__Alternatives_in_ruleNetworkInterfacePerfSpec692 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleVirtualNetworkInterfacePerfSpec_in_entryRuleVirtualNetworkInterfacePerfSpec719 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleVirtualNetworkInterfacePerfSpec726 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__0_in_ruleVirtualNetworkInterfacePerfSpec752 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePhysicalNetworkInterfacePerfSpec_in_entryRulePhysicalNetworkInterfacePerfSpec779 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePhysicalNetworkInterfacePerfSpec786 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__0_in_rulePhysicalNetworkInterfacePerfSpec812 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLinkPerfSpec_in_entryRuleLinkPerfSpec839 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLinkPerfSpec846 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LinkPerfSpec__Alternatives_in_ruleLinkPerfSpec872 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleVirtualLinkPerfSpec_in_entryRuleVirtualLinkPerfSpec899 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleVirtualLinkPerfSpec906 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__Group__0_in_ruleVirtualLinkPerfSpec932 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePhysicalLinkPerfSpec_in_entryRulePhysicalLinkPerfSpec959 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePhysicalLinkPerfSpec966 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__Group__0_in_rulePhysicalLinkPerfSpec992 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIntermediateNodePerfSpec_in_entryRuleIntermediateNodePerfSpec1019 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleIntermediateNodePerfSpec1026 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IntermediateNodePerfSpec__Group__0_in_ruleIntermediateNodePerfSpec1052 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleControlPlanePerfSpec_in_entryRuleControlPlanePerfSpec1079 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleControlPlanePerfSpec1086 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__Group__0_in_ruleControlPlanePerfSpec1112 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDataPlanePerfSpec_in_entryRuleDataPlanePerfSpec1139 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDataPlanePerfSpec1146 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__0_in_ruleDataPlanePerfSpec1172 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEndNodePerfSpec_in_entryRuleEndNodePerfSpec1199 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEndNodePerfSpec1206 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group__0_in_ruleEndNodePerfSpec1232 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNetworkInterface_in_entryRuleNetworkInterface1259 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNetworkInterface1266 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInterface__Alternatives_in_ruleNetworkInterface1292 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNetworkTraffic_in_entryRuleNetworkTraffic1319 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNetworkTraffic1326 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group__0_in_ruleNetworkTraffic1352 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNetworkStructure_in_entryRuleNetworkStructure1379 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNetworkStructure1386 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group__0_in_ruleNetworkStructure1412 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNetworkConfiguration_in_entryRuleNetworkConfiguration1439 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNetworkConfiguration1446 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkConfiguration__Group__0_in_ruleNetworkConfiguration1472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExperimentParam_in_entryRuleExperimentParam1499 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleExperimentParam1506 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExperimentParam__Group__0_in_ruleExperimentParam1532 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_entryRuleEString1559 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEString1566 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EString__Alternatives_in_ruleEString1592 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSoftwareComponent_in_entryRuleSoftwareComponent1619 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleSoftwareComponent1626 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__0_in_ruleSoftwareComponent1652 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEntityAddress_in_entryRuleEntityAddress1679 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEntityAddress1686 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group__0_in_ruleEntityAddress1712 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleONOFFFlow_in_entryRuleONOFFFlow1739 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleONOFFFlow1746 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__0_in_ruleONOFFFlow1772 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleGenericFlow_in_entryRuleGenericFlow1799 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleGenericFlow1806 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__0_in_ruleGenericFlow1832 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNetworkProtocol_in_entryRuleNetworkProtocol1859 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNetworkProtocol1866 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__0_in_ruleNetworkProtocol1892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEInt_in_entryRuleEInt1919 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEInt1926 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EInt__Group__0_in_ruleEInt1952 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEBoolean_in_entryRuleEBoolean1979 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEBoolean1986 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EBoolean__Alternatives_in_ruleEBoolean2012 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleConstantDoubleVariable_in_entryRuleConstantDoubleVariable2039 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleConstantDoubleVariable2046 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantDoubleVariable__Group__0_in_ruleConstantDoubleVariable2072 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleConstantLongVariable_in_entryRuleConstantLongVariable2099 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleConstantLongVariable2106 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantLongVariable__Group__0_in_ruleConstantLongVariable2132 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleRandomVariable_in_entryRuleRandomVariable2159 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleRandomVariable2166 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RandomVariable__Group__0_in_ruleRandomVariable2192 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleContinuousFunction_in_entryRuleContinuousFunction2219 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleContinuousFunction2226 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group__0_in_ruleContinuousFunction2252 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDiscreteFunction_in_entryRuleDiscreteFunction2279 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDiscreteFunction2286 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__0_in_ruleDiscreteFunction2312 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEFloat_in_entryRuleEFloat2339 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEFloat2346 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EFloat__Group__0_in_ruleEFloat2372 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSpeedUnit_in_entryRuleSpeedUnit2399 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleSpeedUnit2406 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__Group__0_in_ruleSpeedUnit2432 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEDouble_in_entryRuleEDouble2459 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEDouble2466 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EDouble__Group__0_in_ruleEDouble2492 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleELong_in_entryRuleELong2519 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleELong2526 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ELong__Group__0_in_ruleELong2552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDataSeries_in_entryRuleDataSeries2579 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDataSeries2586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group__0_in_ruleDataSeries2612 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTrafficSource_in_entryRuleTrafficSource2639 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTrafficSource2646 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__0_in_ruleTrafficSource2672 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleGenericWorkload_in_entryRuleGenericWorkload2699 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleGenericWorkload2706 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group__0_in_ruleGenericWorkload2732 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBranchAction_in_entryRuleBranchAction2759 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBranchAction2766 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group__0_in_ruleBranchAction2792 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLoopAction_in_entryRuleLoopAction2819 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLoopAction2826 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LoopAction__Group__0_in_ruleLoopAction2852 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSequenceAction_in_entryRuleSequenceAction2879 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleSequenceAction2886 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group__0_in_ruleSequenceAction2912 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStartAction_in_entryRuleStartAction2939 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStartAction2946 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StartAction__Group__0_in_ruleStartAction2972 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStopAction_in_entryRuleStopAction2999 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleStopAction3006 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StopAction__Group__0_in_ruleStopAction3032 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTransmitAction_in_entryRuleTransmitAction3059 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTransmitAction3066 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TransmitAction__Group__0_in_ruleTransmitAction3092 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleWaitAction_in_entryRuleWaitAction3119 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleWaitAction3126 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__WaitAction__Group__0_in_ruleWaitAction3152 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleVirtualNode_in_entryRuleVirtualNode3181 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleVirtualNode3188 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__0_in_ruleVirtualNode3214 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePhysicalNode_in_entryRulePhysicalNode3241 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePhysicalNode3248 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__0_in_rulePhysicalNode3274 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePhysicalLink_in_entryRulePhysicalLink3301 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePhysicalLink3308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__0_in_rulePhysicalLink3334 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleVirtualLink_in_entryRuleVirtualLink3361 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleVirtualLink3368 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__0_in_ruleVirtualLink3394 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProtocolsRepository_in_entryRuleProtocolsRepository3421 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleProtocolsRepository3428 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group__0_in_ruleProtocolsRepository3454 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleRoutesRepository_in_entryRuleRoutesRepository3481 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleRoutesRepository3488 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group__0_in_ruleRoutesRepository3514 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProtocolStack_in_entryRuleProtocolStack3541 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleProtocolStack3548 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__0_in_ruleProtocolStack3574 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProtocolLayer_in_entryRuleProtocolLayer3601 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleProtocolLayer3608 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group__0_in_ruleProtocolLayer3634 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleRoute_in_entryRuleRoute3661 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleRoute3668 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group__0_in_ruleRoute3694 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFlowRoute_in_entryRuleFlowRoute3721 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFlowRoute3728 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__0_in_ruleFlowRoute3754 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDirection_in_entryRuleDirection3781 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDirection3788 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group__0_in_ruleDirection3814 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleHop_in_entryRuleHop3841 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleHop3848 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Hop__Group__0_in_ruleHop3874 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEIntegerObject_in_entryRuleEIntegerObject3901 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEIntegerObject3908 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EIntegerObject__Group__0_in_ruleEIntegerObject3934 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePhysicalNetworkInterface_in_entryRulePhysicalNetworkInterface3961 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRulePhysicalNetworkInterface3968 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__0_in_rulePhysicalNetworkInterface3994 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleVirtualNetworkInterface_in_entryRuleVirtualNetworkInterface4021 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleVirtualNetworkInterface4028 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__0_in_ruleVirtualNetworkInterface4054 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__UnitPrefix__Alternatives_in_ruleUnitPrefix4091 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Speed__Alternatives_in_ruleSpeed4127 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleONOFFFlow_in_rule__Flow__Alternatives4162 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleGenericFlow_in_rule__Flow__Alternatives4179 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleVirtualNode_in_rule__Node__Alternatives4211 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePhysicalNode_in_rule__Node__Alternatives4228 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePhysicalLink_in_rule__Link__Alternatives4260 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleVirtualLink_in_rule__Link__Alternatives4277 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleConstantDoubleVariable_in_rule__Dependency__Alternatives4309 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleConstantLongVariable_in_rule__Dependency__Alternatives4326 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleRandomVariable_in_rule__Dependency__Alternatives4343 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleContinuousFunction_in_rule__Dependency__Alternatives4360 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDiscreteFunction_in_rule__Dependency__Alternatives4377 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleContinuousFunction_in_rule__Function__Alternatives4409 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDiscreteFunction_in_rule__Function__Alternatives4426 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBranchAction_in_rule__AbstractAction__Alternatives4458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLoopAction_in_rule__AbstractAction__Alternatives4475 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSequenceAction_in_rule__AbstractAction__Alternatives4492 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStartAction_in_rule__AbstractAction__Alternatives4509 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleStopAction_in_rule__AbstractAction__Alternatives4526 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTransmitAction_in_rule__AbstractAction__Alternatives4543 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleWaitAction_in_rule__AbstractAction__Alternatives4560 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIntermediateNodePerfSpec_in_rule__PerformanceSpecification__Alternatives4592 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEndNodePerfSpec_in_rule__PerformanceSpecification__Alternatives4609 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLinkPerfSpec_in_rule__PerformanceSpecification__Alternatives4626 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNetworkInterfacePerfSpec_in_rule__PerformanceSpecification__Alternatives4643 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePhysicalNetworkInterfacePerfSpec_in_rule__NetworkInterfacePerfSpec__Alternatives4675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleVirtualNetworkInterfacePerfSpec_in_rule__NetworkInterfacePerfSpec__Alternatives4692 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePhysicalLinkPerfSpec_in_rule__LinkPerfSpec__Alternatives4724 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleVirtualLinkPerfSpec_in_rule__LinkPerfSpec__Alternatives4741 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePhysicalNetworkInterface_in_rule__NetworkInterface__Alternatives4773 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleVirtualNetworkInterface_in_rule__NetworkInterface__Alternatives4790 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_STRING_in_rule__EString__Alternatives4822 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__EString__Alternatives4839 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_11_in_rule__EBoolean__Alternatives4872 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_12_in_rule__EBoolean__Alternatives4892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__EFloat__Alternatives_4_04927 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_14_in_rule__EFloat__Alternatives_4_04947 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__EDouble__Alternatives_4_04982 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_14_in_rule__EDouble__Alternatives_4_05002 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_15_in_rule__UnitPrefix__Alternatives5037 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__UnitPrefix__Alternatives5058 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__UnitPrefix__Alternatives5079 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_18_in_rule__UnitPrefix__Alternatives5100 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_19_in_rule__Speed__Alternatives5136 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_20_in_rule__Speed__Alternatives5157 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_21_in_rule__Speed__Alternatives5178 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__0__Impl_in_rule__NetworkInfrastructure__Group__05211 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__1_in_rule__NetworkInfrastructure__Group__05214 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_22_in_rule__NetworkInfrastructure__Group__0__Impl5242 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__1__Impl_in_rule__NetworkInfrastructure__Group__15273 = new BitSet(new long[]{0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__2_in_rule__NetworkInfrastructure__Group__15276 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__NetworkInfrastructure__Group__1__Impl5304 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__2__Impl_in_rule__NetworkInfrastructure__Group__25335 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__3_in_rule__NetworkInfrastructure__Group__25338 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_24_in_rule__NetworkInfrastructure__Group__2__Impl5366 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__3__Impl_in_rule__NetworkInfrastructure__Group__35397 = new BitSet(new long[]{0x0000000002000000L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__4_in_rule__NetworkInfrastructure__Group__35400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__DataCenterNameAssignment_3_in_rule__NetworkInfrastructure__Group__3__Impl5427 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__4__Impl_in_rule__NetworkInfrastructure__Group__45457 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__5_in_rule__NetworkInfrastructure__Group__45460 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_25_in_rule__NetworkInfrastructure__Group__4__Impl5488 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__5__Impl_in_rule__NetworkInfrastructure__Group__55519 = new BitSet(new long[]{0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__6_in_rule__NetworkInfrastructure__Group__55522 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__DataCenterAltNameAssignment_5_in_rule__NetworkInfrastructure__Group__5__Impl5549 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__6__Impl_in_rule__NetworkInfrastructure__Group__65579 = new BitSet(new long[]{0x0020000000000000L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__7_in_rule__NetworkInfrastructure__Group__65582 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__NetworkInfrastructure__Group__6__Impl5610 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__7__Impl_in_rule__NetworkInfrastructure__Group__75641 = new BitSet(new long[]{0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__8_in_rule__NetworkInfrastructure__Group__75644 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__TrafficAssignment_7_in_rule__NetworkInfrastructure__Group__7__Impl5671 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__8__Impl_in_rule__NetworkInfrastructure__Group__85701 = new BitSet(new long[]{0x0100000000000000L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__9_in_rule__NetworkInfrastructure__Group__85704 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__NetworkInfrastructure__Group__8__Impl5732 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__9__Impl_in_rule__NetworkInfrastructure__Group__95763 = new BitSet(new long[]{0x0000000010000000L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__10_in_rule__NetworkInfrastructure__Group__95766 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__StructureAssignment_9_in_rule__NetworkInfrastructure__Group__9__Impl5793 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__10__Impl_in_rule__NetworkInfrastructure__Group__105823 = new BitSet(new long[]{0x0800000000000000L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__11_in_rule__NetworkInfrastructure__Group__105826 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_28_in_rule__NetworkInfrastructure__Group__10__Impl5854 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__11__Impl_in_rule__NetworkInfrastructure__Group__115885 = new BitSet(new long[]{0x0000000060000000L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__12_in_rule__NetworkInfrastructure__Group__115888 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__ConfigurationAssignment_11_in_rule__NetworkInfrastructure__Group__11__Impl5915 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__12__Impl_in_rule__NetworkInfrastructure__Group__125945 = new BitSet(new long[]{0x0000000060000000L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__13_in_rule__NetworkInfrastructure__Group__125948 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group_12__0_in_rule__NetworkInfrastructure__Group__12__Impl5975 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group__13__Impl_in_rule__NetworkInfrastructure__Group__136006 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__NetworkInfrastructure__Group__13__Impl6034 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group_12__0__Impl_in_rule__NetworkInfrastructure__Group_12__06093 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group_12__1_in_rule__NetworkInfrastructure__Group_12__06096 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_30_in_rule__NetworkInfrastructure__Group_12__0__Impl6124 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group_12__1__Impl_in_rule__NetworkInfrastructure__Group_12__16155 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group_12__2_in_rule__NetworkInfrastructure__Group_12__16158 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__NetworkInfrastructure__Group_12__1__Impl6186 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group_12__2__Impl_in_rule__NetworkInfrastructure__Group_12__26217 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group_12__3_in_rule__NetworkInfrastructure__Group_12__26220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__ParamsAssignment_12_2_in_rule__NetworkInfrastructure__Group_12__2__Impl6247 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group_12__3__Impl_in_rule__NetworkInfrastructure__Group_12__36277 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group_12__4_in_rule__NetworkInfrastructure__Group_12__36280 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group_12_3__0_in_rule__NetworkInfrastructure__Group_12__3__Impl6307 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group_12__4__Impl_in_rule__NetworkInfrastructure__Group_12__46338 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__NetworkInfrastructure__Group_12__4__Impl6366 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group_12_3__0__Impl_in_rule__NetworkInfrastructure__Group_12_3__06407 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group_12_3__1_in_rule__NetworkInfrastructure__Group_12_3__06410 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__NetworkInfrastructure__Group_12_3__0__Impl6438 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__Group_12_3__1__Impl_in_rule__NetworkInfrastructure__Group_12_3__16469 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkInfrastructure__ParamsAssignment_12_3_1_in_rule__NetworkInfrastructure__Group_12_3__1__Impl6496 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__0__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__06530 = new BitSet(new long[]{0x0000000100000000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__1_in_rule__VirtualNetworkInterfacePerfSpec__Group__06533 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__1__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__16591 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__2_in_rule__VirtualNetworkInterfacePerfSpec__Group__16594 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_32_in_rule__VirtualNetworkInterfacePerfSpec__Group__1__Impl6622 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__2__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__26653 = new BitSet(new long[]{0x0000000200000000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__3_in_rule__VirtualNetworkInterfacePerfSpec__Group__26656 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__VirtualNetworkInterfacePerfSpec__Group__2__Impl6684 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__3__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__36715 = new BitSet(new long[]{0x0000000000001800L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__4_in_rule__VirtualNetworkInterfacePerfSpec__Group__36718 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_33_in_rule__VirtualNetworkInterfacePerfSpec__Group__3__Impl6746 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__4__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__46777 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__5_in_rule__VirtualNetworkInterfacePerfSpec__Group__46780 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_4_in_rule__VirtualNetworkInterfacePerfSpec__Group__4__Impl6807 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__5__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__56837 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__6_in_rule__VirtualNetworkInterfacePerfSpec__Group__56840 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__VirtualNetworkInterfacePerfSpec__Group__5__Impl6868 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__6__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__66899 = new BitSet(new long[]{0x0000000800000000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__7_in_rule__VirtualNetworkInterfacePerfSpec__Group__66902 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6_in_rule__VirtualNetworkInterfacePerfSpec__Group__6__Impl6929 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__7__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__76959 = new BitSet(new long[]{0x0000000000000040L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__8_in_rule__VirtualNetworkInterfacePerfSpec__Group__76962 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_35_in_rule__VirtualNetworkInterfacePerfSpec__Group__7__Impl6990 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__8__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__87021 = new BitSet(new long[]{0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__9_in_rule__VirtualNetworkInterfacePerfSpec__Group__87024 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_8_in_rule__VirtualNetworkInterfacePerfSpec__Group__8__Impl7051 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__9__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__97081 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__10_in_rule__VirtualNetworkInterfacePerfSpec__Group__97084 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_36_in_rule__VirtualNetworkInterfacePerfSpec__Group__9__Impl7112 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__10__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__107143 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__11_in_rule__VirtualNetworkInterfacePerfSpec__Group__107146 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10_in_rule__VirtualNetworkInterfacePerfSpec__Group__10__Impl7173 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterfacePerfSpec__Group__11__Impl_in_rule__VirtualNetworkInterfacePerfSpec__Group__117203 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__VirtualNetworkInterfacePerfSpec__Group__11__Impl7231 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__0__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__07286 = new BitSet(new long[]{0x0000002000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__1_in_rule__PhysicalNetworkInterfacePerfSpec__Group__07289 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__1__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__17347 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__2_in_rule__PhysicalNetworkInterfacePerfSpec__Group__17350 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_37_in_rule__PhysicalNetworkInterfacePerfSpec__Group__1__Impl7378 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__2__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__27409 = new BitSet(new long[]{0x0000000200000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__3_in_rule__PhysicalNetworkInterfacePerfSpec__Group__27412 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__PhysicalNetworkInterfacePerfSpec__Group__2__Impl7440 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__3__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__37471 = new BitSet(new long[]{0x0000000000001800L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__4_in_rule__PhysicalNetworkInterfacePerfSpec__Group__37474 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_33_in_rule__PhysicalNetworkInterfacePerfSpec__Group__3__Impl7502 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__4__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__47533 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__5_in_rule__PhysicalNetworkInterfacePerfSpec__Group__47536 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_4_in_rule__PhysicalNetworkInterfacePerfSpec__Group__4__Impl7563 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__5__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__57593 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__6_in_rule__PhysicalNetworkInterfacePerfSpec__Group__57596 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__PhysicalNetworkInterfacePerfSpec__Group__5__Impl7624 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__6__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__67655 = new BitSet(new long[]{0x0000000800000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__7_in_rule__PhysicalNetworkInterfacePerfSpec__Group__67658 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_6_in_rule__PhysicalNetworkInterfacePerfSpec__Group__6__Impl7685 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__7__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__77715 = new BitSet(new long[]{0x0000000000000040L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__8_in_rule__PhysicalNetworkInterfacePerfSpec__Group__77718 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_35_in_rule__PhysicalNetworkInterfacePerfSpec__Group__7__Impl7746 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__8__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__87777 = new BitSet(new long[]{0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__9_in_rule__PhysicalNetworkInterfacePerfSpec__Group__87780 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_8_in_rule__PhysicalNetworkInterfacePerfSpec__Group__8__Impl7807 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__9__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__97837 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__10_in_rule__PhysicalNetworkInterfacePerfSpec__Group__97840 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_36_in_rule__PhysicalNetworkInterfacePerfSpec__Group__9__Impl7868 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__10__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__107899 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__11_in_rule__PhysicalNetworkInterfacePerfSpec__Group__107902 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_10_in_rule__PhysicalNetworkInterfacePerfSpec__Group__10__Impl7929 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterfacePerfSpec__Group__11__Impl_in_rule__PhysicalNetworkInterfacePerfSpec__Group__117959 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__PhysicalNetworkInterfacePerfSpec__Group__11__Impl7987 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__Group__0__Impl_in_rule__VirtualLinkPerfSpec__Group__08042 = new BitSet(new long[]{0x0000004000000000L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__Group__1_in_rule__VirtualLinkPerfSpec__Group__08045 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__Group__1__Impl_in_rule__VirtualLinkPerfSpec__Group__18103 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__Group__2_in_rule__VirtualLinkPerfSpec__Group__18106 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_38_in_rule__VirtualLinkPerfSpec__Group__1__Impl8134 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__Group__2__Impl_in_rule__VirtualLinkPerfSpec__Group__28165 = new BitSet(new long[]{0x0000008000000000L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__Group__3_in_rule__VirtualLinkPerfSpec__Group__28168 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__VirtualLinkPerfSpec__Group__2__Impl8196 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__Group__3__Impl_in_rule__VirtualLinkPerfSpec__Group__38227 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__Group__4_in_rule__VirtualLinkPerfSpec__Group__38230 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_39_in_rule__VirtualLinkPerfSpec__Group__3__Impl8258 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__Group__4__Impl_in_rule__VirtualLinkPerfSpec__Group__48289 = new BitSet(new long[]{0x0000010020000000L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__Group__5_in_rule__VirtualLinkPerfSpec__Group__48292 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__PropagationDelayAssignment_4_in_rule__VirtualLinkPerfSpec__Group__4__Impl8319 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__Group__5__Impl_in_rule__VirtualLinkPerfSpec__Group__58349 = new BitSet(new long[]{0x0000010020000000L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__Group__6_in_rule__VirtualLinkPerfSpec__Group__58352 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__Group_5__0_in_rule__VirtualLinkPerfSpec__Group__5__Impl8379 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__Group__6__Impl_in_rule__VirtualLinkPerfSpec__Group__68410 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__VirtualLinkPerfSpec__Group__6__Impl8438 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__Group_5__0__Impl_in_rule__VirtualLinkPerfSpec__Group_5__08483 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__Group_5__1_in_rule__VirtualLinkPerfSpec__Group_5__08486 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_40_in_rule__VirtualLinkPerfSpec__Group_5__0__Impl8514 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__Group_5__1__Impl_in_rule__VirtualLinkPerfSpec__Group_5__18545 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1_in_rule__VirtualLinkPerfSpec__Group_5__1__Impl8572 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__Group__0__Impl_in_rule__PhysicalLinkPerfSpec__Group__08606 = new BitSet(new long[]{0x0000020000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__Group__1_in_rule__PhysicalLinkPerfSpec__Group__08609 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__Group__1__Impl_in_rule__PhysicalLinkPerfSpec__Group__18667 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__Group__2_in_rule__PhysicalLinkPerfSpec__Group__18670 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_rule__PhysicalLinkPerfSpec__Group__1__Impl8698 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__Group__2__Impl_in_rule__PhysicalLinkPerfSpec__Group__28729 = new BitSet(new long[]{0x0000008000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__Group__3_in_rule__PhysicalLinkPerfSpec__Group__28732 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__PhysicalLinkPerfSpec__Group__2__Impl8760 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__Group__3__Impl_in_rule__PhysicalLinkPerfSpec__Group__38791 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__Group__4_in_rule__PhysicalLinkPerfSpec__Group__38794 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_39_in_rule__PhysicalLinkPerfSpec__Group__3__Impl8822 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__Group__4__Impl_in_rule__PhysicalLinkPerfSpec__Group__48853 = new BitSet(new long[]{0x0000010020000000L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__Group__5_in_rule__PhysicalLinkPerfSpec__Group__48856 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_4_in_rule__PhysicalLinkPerfSpec__Group__4__Impl8883 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__Group__5__Impl_in_rule__PhysicalLinkPerfSpec__Group__58913 = new BitSet(new long[]{0x0000010020000000L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__Group__6_in_rule__PhysicalLinkPerfSpec__Group__58916 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__Group_5__0_in_rule__PhysicalLinkPerfSpec__Group__5__Impl8943 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__Group__6__Impl_in_rule__PhysicalLinkPerfSpec__Group__68974 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__PhysicalLinkPerfSpec__Group__6__Impl9002 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__Group_5__0__Impl_in_rule__PhysicalLinkPerfSpec__Group_5__09047 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__Group_5__1_in_rule__PhysicalLinkPerfSpec__Group_5__09050 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_40_in_rule__PhysicalLinkPerfSpec__Group_5__0__Impl9078 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__Group_5__1__Impl_in_rule__PhysicalLinkPerfSpec__Group_5__19109 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_1_in_rule__PhysicalLinkPerfSpec__Group_5__1__Impl9136 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IntermediateNodePerfSpec__Group__0__Impl_in_rule__IntermediateNodePerfSpec__Group__09170 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__IntermediateNodePerfSpec__Group__1_in_rule__IntermediateNodePerfSpec__Group__09173 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_42_in_rule__IntermediateNodePerfSpec__Group__0__Impl9201 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IntermediateNodePerfSpec__Group__1__Impl_in_rule__IntermediateNodePerfSpec__Group__19232 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__IntermediateNodePerfSpec__Group__2_in_rule__IntermediateNodePerfSpec__Group__19235 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__IntermediateNodePerfSpec__Group__1__Impl9263 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IntermediateNodePerfSpec__Group__2__Impl_in_rule__IntermediateNodePerfSpec__Group__29294 = new BitSet(new long[]{0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__IntermediateNodePerfSpec__Group__3_in_rule__IntermediateNodePerfSpec__Group__29297 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__IntermediateNodePerfSpec__Group__2__Impl9325 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IntermediateNodePerfSpec__Group__3__Impl_in_rule__IntermediateNodePerfSpec__Group__39356 = new BitSet(new long[]{0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__IntermediateNodePerfSpec__Group__4_in_rule__IntermediateNodePerfSpec__Group__39359 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IntermediateNodePerfSpec__DataplaneAssignment_3_in_rule__IntermediateNodePerfSpec__Group__3__Impl9386 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IntermediateNodePerfSpec__Group__4__Impl_in_rule__IntermediateNodePerfSpec__Group__49416 = new BitSet(new long[]{0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__IntermediateNodePerfSpec__Group__5_in_rule__IntermediateNodePerfSpec__Group__49419 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__IntermediateNodePerfSpec__Group__4__Impl9447 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IntermediateNodePerfSpec__Group__5__Impl_in_rule__IntermediateNodePerfSpec__Group__59478 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__IntermediateNodePerfSpec__Group__6_in_rule__IntermediateNodePerfSpec__Group__59481 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IntermediateNodePerfSpec__ControlplaneAssignment_5_in_rule__IntermediateNodePerfSpec__Group__5__Impl9508 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IntermediateNodePerfSpec__Group__6__Impl_in_rule__IntermediateNodePerfSpec__Group__69538 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__IntermediateNodePerfSpec__Group__6__Impl9566 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__Group__0__Impl_in_rule__ControlPlanePerfSpec__Group__09611 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__Group__1_in_rule__ControlPlanePerfSpec__Group__09614 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_45_in_rule__ControlPlanePerfSpec__Group__0__Impl9642 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__Group__1__Impl_in_rule__ControlPlanePerfSpec__Group__19673 = new BitSet(new long[]{0x0000400000000000L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__Group__2_in_rule__ControlPlanePerfSpec__Group__19676 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__ControlPlanePerfSpec__Group__1__Impl9704 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__Group__2__Impl_in_rule__ControlPlanePerfSpec__Group__29735 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__Group__3_in_rule__ControlPlanePerfSpec__Group__29738 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_46_in_rule__ControlPlanePerfSpec__Group__2__Impl9766 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__Group__3__Impl_in_rule__ControlPlanePerfSpec__Group__39797 = new BitSet(new long[]{0x0000800000000000L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__Group__4_in_rule__ControlPlanePerfSpec__Group__39800 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_3_in_rule__ControlPlanePerfSpec__Group__3__Impl9827 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__Group__4__Impl_in_rule__ControlPlanePerfSpec__Group__49857 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__Group__5_in_rule__ControlPlanePerfSpec__Group__49860 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_47_in_rule__ControlPlanePerfSpec__Group__4__Impl9888 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__Group__5__Impl_in_rule__ControlPlanePerfSpec__Group__59919 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__Group__6_in_rule__ControlPlanePerfSpec__Group__59922 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_5_in_rule__ControlPlanePerfSpec__Group__5__Impl9949 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__Group__6__Impl_in_rule__ControlPlanePerfSpec__Group__69979 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__Group__7_in_rule__ControlPlanePerfSpec__Group__69982 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__ControlPlanePerfSpec__Group__6__Impl10010 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__Group__7__Impl_in_rule__ControlPlanePerfSpec__Group__710041 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__Group__8_in_rule__ControlPlanePerfSpec__Group__710044 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_7_in_rule__ControlPlanePerfSpec__Group__7__Impl10071 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ControlPlanePerfSpec__Group__8__Impl_in_rule__ControlPlanePerfSpec__Group__810101 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__ControlPlanePerfSpec__Group__8__Impl10129 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__0__Impl_in_rule__DataPlanePerfSpec__Group__010178 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__1_in_rule__DataPlanePerfSpec__Group__010181 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_45_in_rule__DataPlanePerfSpec__Group__0__Impl10209 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__1__Impl_in_rule__DataPlanePerfSpec__Group__110240 = new BitSet(new long[]{0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__2_in_rule__DataPlanePerfSpec__Group__110243 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__DataPlanePerfSpec__Group__1__Impl10271 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__2__Impl_in_rule__DataPlanePerfSpec__Group__210302 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__3_in_rule__DataPlanePerfSpec__Group__210305 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_48_in_rule__DataPlanePerfSpec__Group__2__Impl10333 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__3__Impl_in_rule__DataPlanePerfSpec__Group__310364 = new BitSet(new long[]{0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__4_in_rule__DataPlanePerfSpec__Group__310367 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__ForwardingLatencyAssignment_3_in_rule__DataPlanePerfSpec__Group__3__Impl10394 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__4__Impl_in_rule__DataPlanePerfSpec__Group__410424 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__5_in_rule__DataPlanePerfSpec__Group__410427 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_49_in_rule__DataPlanePerfSpec__Group__4__Impl10455 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__5__Impl_in_rule__DataPlanePerfSpec__Group__510486 = new BitSet(new long[]{0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__6_in_rule__DataPlanePerfSpec__Group__510489 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_5_in_rule__DataPlanePerfSpec__Group__5__Impl10516 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__6__Impl_in_rule__DataPlanePerfSpec__Group__610546 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__7_in_rule__DataPlanePerfSpec__Group__610549 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_50_in_rule__DataPlanePerfSpec__Group__6__Impl10577 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__7__Impl_in_rule__DataPlanePerfSpec__Group__710608 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__8_in_rule__DataPlanePerfSpec__Group__710611 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_7_in_rule__DataPlanePerfSpec__Group__7__Impl10638 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__8__Impl_in_rule__DataPlanePerfSpec__Group__810668 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__9_in_rule__DataPlanePerfSpec__Group__810671 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__DataPlanePerfSpec__Group__8__Impl10699 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__9__Impl_in_rule__DataPlanePerfSpec__Group__910730 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__10_in_rule__DataPlanePerfSpec__Group__910733 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_9_in_rule__DataPlanePerfSpec__Group__9__Impl10760 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataPlanePerfSpec__Group__10__Impl_in_rule__DataPlanePerfSpec__Group__1010790 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__DataPlanePerfSpec__Group__10__Impl10818 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group__0__Impl_in_rule__EndNodePerfSpec__Group__010871 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group__1_in_rule__EndNodePerfSpec__Group__010874 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__EndNodePerfSpec__Group__0__Impl10902 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group__1__Impl_in_rule__EndNodePerfSpec__Group__110933 = new BitSet(new long[]{0x0010000000000000L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group__2_in_rule__EndNodePerfSpec__Group__110936 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__EndNodePerfSpec__Group__1__Impl10964 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group__2__Impl_in_rule__EndNodePerfSpec__Group__210995 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group__3_in_rule__EndNodePerfSpec__Group__210998 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_52_in_rule__EndNodePerfSpec__Group__2__Impl11026 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group__3__Impl_in_rule__EndNodePerfSpec__Group__311057 = new BitSet(new long[]{0x0000180020000000L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group__4_in_rule__EndNodePerfSpec__Group__311060 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_3_in_rule__EndNodePerfSpec__Group__3__Impl11087 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group__4__Impl_in_rule__EndNodePerfSpec__Group__411117 = new BitSet(new long[]{0x0000180020000000L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group__5_in_rule__EndNodePerfSpec__Group__411120 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group_4__0_in_rule__EndNodePerfSpec__Group__4__Impl11147 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group__5__Impl_in_rule__EndNodePerfSpec__Group__511178 = new BitSet(new long[]{0x0000180020000000L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group__6_in_rule__EndNodePerfSpec__Group__511181 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group_5__0_in_rule__EndNodePerfSpec__Group__5__Impl11208 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group__6__Impl_in_rule__EndNodePerfSpec__Group__611239 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__EndNodePerfSpec__Group__6__Impl11267 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group_4__0__Impl_in_rule__EndNodePerfSpec__Group_4__011312 = new BitSet(new long[]{0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group_4__1_in_rule__EndNodePerfSpec__Group_4__011315 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__EndNodePerfSpec__Group_4__0__Impl11343 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group_4__1__Impl_in_rule__EndNodePerfSpec__Group_4__111374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__DataplaneAssignment_4_1_in_rule__EndNodePerfSpec__Group_4__1__Impl11401 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group_5__0__Impl_in_rule__EndNodePerfSpec__Group_5__011435 = new BitSet(new long[]{0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group_5__1_in_rule__EndNodePerfSpec__Group_5__011438 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__EndNodePerfSpec__Group_5__0__Impl11466 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__Group_5__1__Impl_in_rule__EndNodePerfSpec__Group_5__111497 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EndNodePerfSpec__ControlplaneAssignment_5_1_in_rule__EndNodePerfSpec__Group_5__1__Impl11524 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group__0__Impl_in_rule__NetworkTraffic__Group__011558 = new BitSet(new long[]{0x0020000000000000L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group__1_in_rule__NetworkTraffic__Group__011561 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group__1__Impl_in_rule__NetworkTraffic__Group__111619 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group__2_in_rule__NetworkTraffic__Group__111622 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_53_in_rule__NetworkTraffic__Group__1__Impl11650 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group__2__Impl_in_rule__NetworkTraffic__Group__211681 = new BitSet(new long[]{0x00C0000020000000L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group__3_in_rule__NetworkTraffic__Group__211684 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__NetworkTraffic__Group__2__Impl11712 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group__3__Impl_in_rule__NetworkTraffic__Group__311743 = new BitSet(new long[]{0x00C0000020000000L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group__4_in_rule__NetworkTraffic__Group__311746 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_3__0_in_rule__NetworkTraffic__Group__3__Impl11773 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group__4__Impl_in_rule__NetworkTraffic__Group__411804 = new BitSet(new long[]{0x00C0000020000000L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group__5_in_rule__NetworkTraffic__Group__411807 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_4__0_in_rule__NetworkTraffic__Group__4__Impl11834 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group__5__Impl_in_rule__NetworkTraffic__Group__511865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__NetworkTraffic__Group__5__Impl11893 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_3__0__Impl_in_rule__NetworkTraffic__Group_3__011936 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_3__1_in_rule__NetworkTraffic__Group_3__011939 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_54_in_rule__NetworkTraffic__Group_3__0__Impl11967 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_3__1__Impl_in_rule__NetworkTraffic__Group_3__111998 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L,0x0000000080000000L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_3__2_in_rule__NetworkTraffic__Group_3__112001 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__NetworkTraffic__Group_3__1__Impl12029 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_3__2__Impl_in_rule__NetworkTraffic__Group_3__212060 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_3__3_in_rule__NetworkTraffic__Group_3__212063 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__FlowsAssignment_3_2_in_rule__NetworkTraffic__Group_3__2__Impl12090 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_3__3__Impl_in_rule__NetworkTraffic__Group_3__312120 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_3__4_in_rule__NetworkTraffic__Group_3__312123 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_3_3__0_in_rule__NetworkTraffic__Group_3__3__Impl12150 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_3__4__Impl_in_rule__NetworkTraffic__Group_3__412181 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__NetworkTraffic__Group_3__4__Impl12209 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_3_3__0__Impl_in_rule__NetworkTraffic__Group_3_3__012250 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L,0x0000000080000000L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_3_3__1_in_rule__NetworkTraffic__Group_3_3__012253 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__NetworkTraffic__Group_3_3__0__Impl12281 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_3_3__1__Impl_in_rule__NetworkTraffic__Group_3_3__112312 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__FlowsAssignment_3_3_1_in_rule__NetworkTraffic__Group_3_3__1__Impl12339 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_4__0__Impl_in_rule__NetworkTraffic__Group_4__012373 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_4__1_in_rule__NetworkTraffic__Group_4__012376 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_55_in_rule__NetworkTraffic__Group_4__0__Impl12404 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_4__1__Impl_in_rule__NetworkTraffic__Group_4__112435 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_4__2_in_rule__NetworkTraffic__Group_4__112438 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__NetworkTraffic__Group_4__1__Impl12466 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_4__2__Impl_in_rule__NetworkTraffic__Group_4__212497 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_4__3_in_rule__NetworkTraffic__Group_4__212500 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__SoftwareAssignment_4_2_in_rule__NetworkTraffic__Group_4__2__Impl12527 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_4__3__Impl_in_rule__NetworkTraffic__Group_4__312557 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_4__4_in_rule__NetworkTraffic__Group_4__312560 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_4_3__0_in_rule__NetworkTraffic__Group_4__3__Impl12587 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_4__4__Impl_in_rule__NetworkTraffic__Group_4__412618 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__NetworkTraffic__Group_4__4__Impl12646 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_4_3__0__Impl_in_rule__NetworkTraffic__Group_4_3__012687 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_4_3__1_in_rule__NetworkTraffic__Group_4_3__012690 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__NetworkTraffic__Group_4_3__0__Impl12718 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__Group_4_3__1__Impl_in_rule__NetworkTraffic__Group_4_3__112749 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkTraffic__SoftwareAssignment_4_3_1_in_rule__NetworkTraffic__Group_4_3__1__Impl12776 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group__0__Impl_in_rule__NetworkStructure__Group__012810 = new BitSet(new long[]{0x0100000000000000L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group__1_in_rule__NetworkStructure__Group__012813 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group__1__Impl_in_rule__NetworkStructure__Group__112871 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group__2_in_rule__NetworkStructure__Group__112874 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_56_in_rule__NetworkStructure__Group__1__Impl12902 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group__2__Impl_in_rule__NetworkStructure__Group__212933 = new BitSet(new long[]{0x0600000020000000L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group__3_in_rule__NetworkStructure__Group__212936 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__NetworkStructure__Group__2__Impl12964 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group__3__Impl_in_rule__NetworkStructure__Group__312995 = new BitSet(new long[]{0x0600000020000000L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group__4_in_rule__NetworkStructure__Group__312998 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_3__0_in_rule__NetworkStructure__Group__3__Impl13025 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group__4__Impl_in_rule__NetworkStructure__Group__413056 = new BitSet(new long[]{0x0600000020000000L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group__5_in_rule__NetworkStructure__Group__413059 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_4__0_in_rule__NetworkStructure__Group__4__Impl13086 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group__5__Impl_in_rule__NetworkStructure__Group__513117 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__NetworkStructure__Group__5__Impl13145 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_3__0__Impl_in_rule__NetworkStructure__Group_3__013188 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_3__1_in_rule__NetworkStructure__Group_3__013191 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_57_in_rule__NetworkStructure__Group_3__0__Impl13219 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_3__1__Impl_in_rule__NetworkStructure__Group_3__113250 = new BitSet(new long[]{0x0000000000000000L,0x4100000000000000L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_3__2_in_rule__NetworkStructure__Group_3__113253 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__NetworkStructure__Group_3__1__Impl13281 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_3__2__Impl_in_rule__NetworkStructure__Group_3__213312 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_3__3_in_rule__NetworkStructure__Group_3__213315 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__NodesAssignment_3_2_in_rule__NetworkStructure__Group_3__2__Impl13342 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_3__3__Impl_in_rule__NetworkStructure__Group_3__313372 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_3__4_in_rule__NetworkStructure__Group_3__313375 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_3_3__0_in_rule__NetworkStructure__Group_3__3__Impl13402 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_3__4__Impl_in_rule__NetworkStructure__Group_3__413433 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__NetworkStructure__Group_3__4__Impl13461 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_3_3__0__Impl_in_rule__NetworkStructure__Group_3_3__013502 = new BitSet(new long[]{0x0000000000000000L,0x4100000000000000L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_3_3__1_in_rule__NetworkStructure__Group_3_3__013505 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__NetworkStructure__Group_3_3__0__Impl13533 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_3_3__1__Impl_in_rule__NetworkStructure__Group_3_3__113564 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__NodesAssignment_3_3_1_in_rule__NetworkStructure__Group_3_3__1__Impl13591 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_4__0__Impl_in_rule__NetworkStructure__Group_4__013625 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_4__1_in_rule__NetworkStructure__Group_4__013628 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_rule__NetworkStructure__Group_4__0__Impl13656 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_4__1__Impl_in_rule__NetworkStructure__Group_4__113687 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000005L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_4__2_in_rule__NetworkStructure__Group_4__113690 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__NetworkStructure__Group_4__1__Impl13718 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_4__2__Impl_in_rule__NetworkStructure__Group_4__213749 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_4__3_in_rule__NetworkStructure__Group_4__213752 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__LinksAssignment_4_2_in_rule__NetworkStructure__Group_4__2__Impl13779 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_4__3__Impl_in_rule__NetworkStructure__Group_4__313809 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_4__4_in_rule__NetworkStructure__Group_4__313812 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_4_3__0_in_rule__NetworkStructure__Group_4__3__Impl13839 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_4__4__Impl_in_rule__NetworkStructure__Group_4__413870 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__NetworkStructure__Group_4__4__Impl13898 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_4_3__0__Impl_in_rule__NetworkStructure__Group_4_3__013939 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000005L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_4_3__1_in_rule__NetworkStructure__Group_4_3__013942 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__NetworkStructure__Group_4_3__0__Impl13970 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__Group_4_3__1__Impl_in_rule__NetworkStructure__Group_4_3__114001 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkStructure__LinksAssignment_4_3_1_in_rule__NetworkStructure__Group_4_3__1__Impl14028 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkConfiguration__Group__0__Impl_in_rule__NetworkConfiguration__Group__014062 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__NetworkConfiguration__Group__1_in_rule__NetworkConfiguration__Group__014065 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_59_in_rule__NetworkConfiguration__Group__0__Impl14093 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkConfiguration__Group__1__Impl_in_rule__NetworkConfiguration__Group__114124 = new BitSet(new long[]{0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__NetworkConfiguration__Group__2_in_rule__NetworkConfiguration__Group__114127 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__NetworkConfiguration__Group__1__Impl14155 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkConfiguration__Group__2__Impl_in_rule__NetworkConfiguration__Group__214186 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+        public static final BitSet FOLLOW_rule__NetworkConfiguration__Group__3_in_rule__NetworkConfiguration__Group__214189 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_rule__NetworkConfiguration__Group__2__Impl14217 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkConfiguration__Group__3__Impl_in_rule__NetworkConfiguration__Group__314248 = new BitSet(new long[]{0x2000000000000000L});
+        public static final BitSet FOLLOW_rule__NetworkConfiguration__Group__4_in_rule__NetworkConfiguration__Group__314251 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkConfiguration__ProtocolsAndStacksAssignment_3_in_rule__NetworkConfiguration__Group__3__Impl14278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkConfiguration__Group__4__Impl_in_rule__NetworkConfiguration__Group__414308 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__NetworkConfiguration__Group__5_in_rule__NetworkConfiguration__Group__414311 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_61_in_rule__NetworkConfiguration__Group__4__Impl14339 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkConfiguration__Group__5__Impl_in_rule__NetworkConfiguration__Group__514370 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__NetworkConfiguration__Group__6_in_rule__NetworkConfiguration__Group__514373 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkConfiguration__RoutesAssignment_5_in_rule__NetworkConfiguration__Group__5__Impl14400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkConfiguration__Group__6__Impl_in_rule__NetworkConfiguration__Group__614430 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__NetworkConfiguration__Group__6__Impl14458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExperimentParam__Group__0__Impl_in_rule__ExperimentParam__Group__014503 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ExperimentParam__Group__1_in_rule__ExperimentParam__Group__014506 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_62_in_rule__ExperimentParam__Group__0__Impl14534 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExperimentParam__Group__1__Impl_in_rule__ExperimentParam__Group__114565 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__ExperimentParam__Group__2_in_rule__ExperimentParam__Group__114568 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExperimentParam__NameAssignment_1_in_rule__ExperimentParam__Group__1__Impl14595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExperimentParam__Group__2__Impl_in_rule__ExperimentParam__Group__214625 = new BitSet(new long[]{0x8000000000000000L});
+        public static final BitSet FOLLOW_rule__ExperimentParam__Group__3_in_rule__ExperimentParam__Group__214628 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__ExperimentParam__Group__2__Impl14656 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExperimentParam__Group__3__Impl_in_rule__ExperimentParam__Group__314687 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ExperimentParam__Group__4_in_rule__ExperimentParam__Group__314690 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_63_in_rule__ExperimentParam__Group__3__Impl14718 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExperimentParam__Group__4__Impl_in_rule__ExperimentParam__Group__414749 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__ExperimentParam__Group__5_in_rule__ExperimentParam__Group__414752 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExperimentParam__ValueAssignment_4_in_rule__ExperimentParam__Group__4__Impl14779 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ExperimentParam__Group__5__Impl_in_rule__ExperimentParam__Group__514809 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__ExperimentParam__Group__5__Impl14837 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__0__Impl_in_rule__SoftwareComponent__Group__014880 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__1_in_rule__SoftwareComponent__Group__014883 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_64_in_rule__SoftwareComponent__Group__0__Impl14911 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__1__Impl_in_rule__SoftwareComponent__Group__114942 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__2_in_rule__SoftwareComponent__Group__114945 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__IdAssignment_1_in_rule__SoftwareComponent__Group__1__Impl14972 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__2__Impl_in_rule__SoftwareComponent__Group__215002 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__3_in_rule__SoftwareComponent__Group__215005 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__SoftwareComponent__Group__2__Impl15033 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__3__Impl_in_rule__SoftwareComponent__Group__315064 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__4_in_rule__SoftwareComponent__Group__315067 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_rule__SoftwareComponent__Group__3__Impl15095 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__4__Impl_in_rule__SoftwareComponent__Group__415126 = new BitSet(new long[]{0x0000000000000000L,0x000000000000000CL});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__5_in_rule__SoftwareComponent__Group__415129 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__NameAssignment_4_in_rule__SoftwareComponent__Group__4__Impl15156 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__5__Impl_in_rule__SoftwareComponent__Group__515186 = new BitSet(new long[]{0x0000000000000000L,0x000000000000000CL});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__6_in_rule__SoftwareComponent__Group__515189 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_5__0_in_rule__SoftwareComponent__Group__5__Impl15216 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__6__Impl_in_rule__SoftwareComponent__Group__615247 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__7_in_rule__SoftwareComponent__Group__615250 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_66_in_rule__SoftwareComponent__Group__6__Impl15278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__7__Impl_in_rule__SoftwareComponent__Group__715309 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__8_in_rule__SoftwareComponent__Group__715312 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__DeployedOnAssignment_7_in_rule__SoftwareComponent__Group__7__Impl15339 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__8__Impl_in_rule__SoftwareComponent__Group__815369 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__9_in_rule__SoftwareComponent__Group__815372 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_8__0_in_rule__SoftwareComponent__Group__8__Impl15399 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group__9__Impl_in_rule__SoftwareComponent__Group__915430 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__SoftwareComponent__Group__9__Impl15458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_5__0__Impl_in_rule__SoftwareComponent__Group_5__015509 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_5__1_in_rule__SoftwareComponent__Group_5__015512 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__SoftwareComponent__Group_5__0__Impl15540 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_5__1__Impl_in_rule__SoftwareComponent__Group_5__115571 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_5__2_in_rule__SoftwareComponent__Group_5__115574 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__SoftwareComponent__Group_5__1__Impl15602 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_5__2__Impl_in_rule__SoftwareComponent__Group_5__215633 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_5__3_in_rule__SoftwareComponent__Group_5__215636 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__AlternativeNamesAssignment_5_2_in_rule__SoftwareComponent__Group_5__2__Impl15663 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_5__3__Impl_in_rule__SoftwareComponent__Group_5__315693 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_5__4_in_rule__SoftwareComponent__Group_5__315696 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_5_3__0_in_rule__SoftwareComponent__Group_5__3__Impl15723 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_5__4__Impl_in_rule__SoftwareComponent__Group_5__415754 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__SoftwareComponent__Group_5__4__Impl15782 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_5_3__0__Impl_in_rule__SoftwareComponent__Group_5_3__015823 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_5_3__1_in_rule__SoftwareComponent__Group_5_3__015826 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__SoftwareComponent__Group_5_3__0__Impl15854 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_5_3__1__Impl_in_rule__SoftwareComponent__Group_5_3__115885 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__AlternativeNamesAssignment_5_3_1_in_rule__SoftwareComponent__Group_5_3__1__Impl15912 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_8__0__Impl_in_rule__SoftwareComponent__Group_8__015946 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_8__1_in_rule__SoftwareComponent__Group_8__015949 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_68_in_rule__SoftwareComponent__Group_8__0__Impl15977 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_8__1__Impl_in_rule__SoftwareComponent__Group_8__116008 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_8__2_in_rule__SoftwareComponent__Group_8__116011 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__SoftwareComponent__Group_8__1__Impl16039 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_8__2__Impl_in_rule__SoftwareComponent__Group_8__216070 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_8__3_in_rule__SoftwareComponent__Group_8__216073 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__TrafficSourcesAssignment_8_2_in_rule__SoftwareComponent__Group_8__2__Impl16100 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_8__3__Impl_in_rule__SoftwareComponent__Group_8__316130 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_8__4_in_rule__SoftwareComponent__Group_8__316133 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_8_3__0_in_rule__SoftwareComponent__Group_8__3__Impl16160 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_8__4__Impl_in_rule__SoftwareComponent__Group_8__416191 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__SoftwareComponent__Group_8__4__Impl16219 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_8_3__0__Impl_in_rule__SoftwareComponent__Group_8_3__016260 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_8_3__1_in_rule__SoftwareComponent__Group_8_3__016263 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__SoftwareComponent__Group_8_3__0__Impl16291 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__Group_8_3__1__Impl_in_rule__SoftwareComponent__Group_8_3__116322 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SoftwareComponent__TrafficSourcesAssignment_8_3_1_in_rule__SoftwareComponent__Group_8_3__1__Impl16349 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group__0__Impl_in_rule__EntityAddress__Group__016383 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group__1_in_rule__EntityAddress__Group__016386 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group__1__Impl_in_rule__EntityAddress__Group__116444 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group__2_in_rule__EntityAddress__Group__116447 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_69_in_rule__EntityAddress__Group__1__Impl16475 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group__2__Impl_in_rule__EntityAddress__Group__216506 = new BitSet(new long[]{0x0000000020000000L,0x00000000000000C0L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group__3_in_rule__EntityAddress__Group__216509 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__EntityAddress__Group__2__Impl16537 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group__3__Impl_in_rule__EntityAddress__Group__316568 = new BitSet(new long[]{0x0000000020000000L,0x00000000000000C0L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group__4_in_rule__EntityAddress__Group__316571 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group_3__0_in_rule__EntityAddress__Group__3__Impl16598 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group__4__Impl_in_rule__EntityAddress__Group__416629 = new BitSet(new long[]{0x0000000020000000L,0x00000000000000C0L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group__5_in_rule__EntityAddress__Group__416632 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group_4__0_in_rule__EntityAddress__Group__4__Impl16659 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group__5__Impl_in_rule__EntityAddress__Group__516690 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__EntityAddress__Group__5__Impl16718 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group_3__0__Impl_in_rule__EntityAddress__Group_3__016761 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group_3__1_in_rule__EntityAddress__Group_3__016764 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_70_in_rule__EntityAddress__Group_3__0__Impl16792 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group_3__1__Impl_in_rule__EntityAddress__Group_3__116823 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EntityAddress__AddressAssignment_3_1_in_rule__EntityAddress__Group_3__1__Impl16850 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group_4__0__Impl_in_rule__EntityAddress__Group_4__016884 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group_4__1_in_rule__EntityAddress__Group_4__016887 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_71_in_rule__EntityAddress__Group_4__0__Impl16915 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EntityAddress__Group_4__1__Impl_in_rule__EntityAddress__Group_4__116946 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EntityAddress__AddressGivenByAssignment_4_1_in_rule__EntityAddress__Group_4__1__Impl16973 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__0__Impl_in_rule__ONOFFFlow__Group__017007 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__1_in_rule__ONOFFFlow__Group__017010 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__StartStateAssignment_0_in_rule__ONOFFFlow__Group__0__Impl17037 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__1__Impl_in_rule__ONOFFFlow__Group__117067 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__2_in_rule__ONOFFFlow__Group__117070 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_72_in_rule__ONOFFFlow__Group__1__Impl17098 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__2__Impl_in_rule__ONOFFFlow__Group__217129 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__3_in_rule__ONOFFFlow__Group__217132 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__IdAssignment_2_in_rule__ONOFFFlow__Group__2__Impl17159 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__3__Impl_in_rule__ONOFFFlow__Group__317189 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__4_in_rule__ONOFFFlow__Group__317192 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__ONOFFFlow__Group__3__Impl17220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__4__Impl_in_rule__ONOFFFlow__Group__417251 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__5_in_rule__ONOFFFlow__Group__417254 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_rule__ONOFFFlow__Group__4__Impl17282 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__5__Impl_in_rule__ONOFFFlow__Group__517313 = new BitSet(new long[]{0x0000000000000000L,0x000000000000E208L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__6_in_rule__ONOFFFlow__Group__517316 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__NameAssignment_5_in_rule__ONOFFFlow__Group__5__Impl17343 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__6__Impl_in_rule__ONOFFFlow__Group__617373 = new BitSet(new long[]{0x0000000000000000L,0x000000000000E208L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__7_in_rule__ONOFFFlow__Group__617376 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_6__0_in_rule__ONOFFFlow__Group__6__Impl17403 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__7__Impl_in_rule__ONOFFFlow__Group__717434 = new BitSet(new long[]{0x0000000000000000L,0x000000000000E208L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__8_in_rule__ONOFFFlow__Group__717437 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_7__0_in_rule__ONOFFFlow__Group__7__Impl17464 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__8__Impl_in_rule__ONOFFFlow__Group__817495 = new BitSet(new long[]{0x0000000000000000L,0x000000000000E208L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__9_in_rule__ONOFFFlow__Group__817498 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_8__0_in_rule__ONOFFFlow__Group__8__Impl17525 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__9__Impl_in_rule__ONOFFFlow__Group__917556 = new BitSet(new long[]{0x0000000000000000L,0x000000000000E208L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__10_in_rule__ONOFFFlow__Group__917559 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_9__0_in_rule__ONOFFFlow__Group__9__Impl17586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__10__Impl_in_rule__ONOFFFlow__Group__1017617 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__11_in_rule__ONOFFFlow__Group__1017620 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_73_in_rule__ONOFFFlow__Group__10__Impl17648 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__11__Impl_in_rule__ONOFFFlow__Group__1117679 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__12_in_rule__ONOFFFlow__Group__1117682 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__ONstateIATAssignment_11_in_rule__ONOFFFlow__Group__11__Impl17709 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__12__Impl_in_rule__ONOFFFlow__Group__1217739 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__13_in_rule__ONOFFFlow__Group__1217742 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_74_in_rule__ONOFFFlow__Group__12__Impl17770 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__13__Impl_in_rule__ONOFFFlow__Group__1317801 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__14_in_rule__ONOFFFlow__Group__1317804 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__ONstateDurationAssignment_13_in_rule__ONOFFFlow__Group__13__Impl17831 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__14__Impl_in_rule__ONOFFFlow__Group__1417861 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__15_in_rule__ONOFFFlow__Group__1417864 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_75_in_rule__ONOFFFlow__Group__14__Impl17892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__15__Impl_in_rule__ONOFFFlow__Group__1517923 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__16_in_rule__ONOFFFlow__Group__1517926 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__OFFstateDurationAssignment_15_in_rule__ONOFFFlow__Group__15__Impl17953 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__16__Impl_in_rule__ONOFFFlow__Group__1617983 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__17_in_rule__ONOFFFlow__Group__1617986 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_76_in_rule__ONOFFFlow__Group__16__Impl18014 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__17__Impl_in_rule__ONOFFFlow__Group__1718045 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__18_in_rule__ONOFFFlow__Group__1718048 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__PacketLengthAssignment_17_in_rule__ONOFFFlow__Group__17__Impl18075 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group__18__Impl_in_rule__ONOFFFlow__Group__1818105 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__ONOFFFlow__Group__18__Impl18133 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_6__0__Impl_in_rule__ONOFFFlow__Group_6__018202 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_6__1_in_rule__ONOFFFlow__Group_6__018205 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__ONOFFFlow__Group_6__0__Impl18233 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_6__1__Impl_in_rule__ONOFFFlow__Group_6__118264 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_6__2_in_rule__ONOFFFlow__Group_6__118267 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__ONOFFFlow__Group_6__1__Impl18295 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_6__2__Impl_in_rule__ONOFFFlow__Group_6__218326 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_6__3_in_rule__ONOFFFlow__Group_6__218329 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__AlternativeNamesAssignment_6_2_in_rule__ONOFFFlow__Group_6__2__Impl18356 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_6__3__Impl_in_rule__ONOFFFlow__Group_6__318386 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_6__4_in_rule__ONOFFFlow__Group_6__318389 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_6_3__0_in_rule__ONOFFFlow__Group_6__3__Impl18416 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_6__4__Impl_in_rule__ONOFFFlow__Group_6__418447 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__ONOFFFlow__Group_6__4__Impl18475 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_6_3__0__Impl_in_rule__ONOFFFlow__Group_6_3__018516 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_6_3__1_in_rule__ONOFFFlow__Group_6_3__018519 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__ONOFFFlow__Group_6_3__0__Impl18547 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_6_3__1__Impl_in_rule__ONOFFFlow__Group_6_3__118578 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__AlternativeNamesAssignment_6_3_1_in_rule__ONOFFFlow__Group_6_3__1__Impl18605 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_7__0__Impl_in_rule__ONOFFFlow__Group_7__018639 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_7__1_in_rule__ONOFFFlow__Group_7__018642 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_77_in_rule__ONOFFFlow__Group_7__0__Impl18670 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_7__1__Impl_in_rule__ONOFFFlow__Group_7__118701 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_1_in_rule__ONOFFFlow__Group_7__1__Impl18728 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_8__0__Impl_in_rule__ONOFFFlow__Group_8__018762 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_8__1_in_rule__ONOFFFlow__Group_8__018765 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_78_in_rule__ONOFFFlow__Group_8__0__Impl18793 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_8__1__Impl_in_rule__ONOFFFlow__Group_8__118824 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_1_in_rule__ONOFFFlow__Group_8__1__Impl18851 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_9__0__Impl_in_rule__ONOFFFlow__Group_9__018885 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_9__1_in_rule__ONOFFFlow__Group_9__018888 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_79_in_rule__ONOFFFlow__Group_9__0__Impl18916 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_9__1__Impl_in_rule__ONOFFFlow__Group_9__118947 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_9__2_in_rule__ONOFFFlow__Group_9__118950 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__ONOFFFlow__Group_9__1__Impl18978 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_9__2__Impl_in_rule__ONOFFFlow__Group_9__219009 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_9__3_in_rule__ONOFFFlow__Group_9__219012 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__DestinationAddressesAssignment_9_2_in_rule__ONOFFFlow__Group_9__2__Impl19039 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_9__3__Impl_in_rule__ONOFFFlow__Group_9__319069 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_9__4_in_rule__ONOFFFlow__Group_9__319072 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_9_3__0_in_rule__ONOFFFlow__Group_9__3__Impl19099 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_9__4__Impl_in_rule__ONOFFFlow__Group_9__419130 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__ONOFFFlow__Group_9__4__Impl19158 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_9_3__0__Impl_in_rule__ONOFFFlow__Group_9_3__019199 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_9_3__1_in_rule__ONOFFFlow__Group_9_3__019202 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__ONOFFFlow__Group_9_3__0__Impl19230 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__Group_9_3__1__Impl_in_rule__ONOFFFlow__Group_9_3__119261 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ONOFFFlow__DestinationAddressesAssignment_9_3_1_in_rule__ONOFFFlow__Group_9_3__1__Impl19288 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__0__Impl_in_rule__GenericFlow__Group__019322 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__1_in_rule__GenericFlow__Group__019325 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_80_in_rule__GenericFlow__Group__0__Impl19353 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__1__Impl_in_rule__GenericFlow__Group__119384 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__2_in_rule__GenericFlow__Group__119387 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__IdAssignment_1_in_rule__GenericFlow__Group__1__Impl19414 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__2__Impl_in_rule__GenericFlow__Group__219444 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__3_in_rule__GenericFlow__Group__219447 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__GenericFlow__Group__2__Impl19475 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__3__Impl_in_rule__GenericFlow__Group__319506 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__4_in_rule__GenericFlow__Group__319509 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_rule__GenericFlow__Group__3__Impl19537 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__4__Impl_in_rule__GenericFlow__Group__419568 = new BitSet(new long[]{0x0000000000000000L,0x000000000002E008L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__5_in_rule__GenericFlow__Group__419571 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__NameAssignment_4_in_rule__GenericFlow__Group__4__Impl19598 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__5__Impl_in_rule__GenericFlow__Group__519628 = new BitSet(new long[]{0x0000000000000000L,0x000000000002E008L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__6_in_rule__GenericFlow__Group__519631 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_5__0_in_rule__GenericFlow__Group__5__Impl19658 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__6__Impl_in_rule__GenericFlow__Group__619689 = new BitSet(new long[]{0x0000000000000000L,0x000000000002E008L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__7_in_rule__GenericFlow__Group__619692 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_6__0_in_rule__GenericFlow__Group__6__Impl19719 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__7__Impl_in_rule__GenericFlow__Group__719750 = new BitSet(new long[]{0x0000000000000000L,0x000000000002E008L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__8_in_rule__GenericFlow__Group__719753 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_7__0_in_rule__GenericFlow__Group__7__Impl19780 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__8__Impl_in_rule__GenericFlow__Group__819811 = new BitSet(new long[]{0x0000000000000000L,0x000000000002E008L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__9_in_rule__GenericFlow__Group__819814 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_8__0_in_rule__GenericFlow__Group__8__Impl19841 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__9__Impl_in_rule__GenericFlow__Group__919872 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__10_in_rule__GenericFlow__Group__919875 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_81_in_rule__GenericFlow__Group__9__Impl19903 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__10__Impl_in_rule__GenericFlow__Group__1019934 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__11_in_rule__GenericFlow__Group__1019937 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__DataSizeAssignment_10_in_rule__GenericFlow__Group__10__Impl19964 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group__11__Impl_in_rule__GenericFlow__Group__1119994 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__GenericFlow__Group__11__Impl20022 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_5__0__Impl_in_rule__GenericFlow__Group_5__020077 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_5__1_in_rule__GenericFlow__Group_5__020080 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__GenericFlow__Group_5__0__Impl20108 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_5__1__Impl_in_rule__GenericFlow__Group_5__120139 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_5__2_in_rule__GenericFlow__Group_5__120142 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__GenericFlow__Group_5__1__Impl20170 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_5__2__Impl_in_rule__GenericFlow__Group_5__220201 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_5__3_in_rule__GenericFlow__Group_5__220204 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__AlternativeNamesAssignment_5_2_in_rule__GenericFlow__Group_5__2__Impl20231 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_5__3__Impl_in_rule__GenericFlow__Group_5__320261 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_5__4_in_rule__GenericFlow__Group_5__320264 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_5_3__0_in_rule__GenericFlow__Group_5__3__Impl20291 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_5__4__Impl_in_rule__GenericFlow__Group_5__420322 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__GenericFlow__Group_5__4__Impl20350 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_5_3__0__Impl_in_rule__GenericFlow__Group_5_3__020391 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_5_3__1_in_rule__GenericFlow__Group_5_3__020394 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__GenericFlow__Group_5_3__0__Impl20422 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_5_3__1__Impl_in_rule__GenericFlow__Group_5_3__120453 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__AlternativeNamesAssignment_5_3_1_in_rule__GenericFlow__Group_5_3__1__Impl20480 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_6__0__Impl_in_rule__GenericFlow__Group_6__020514 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_6__1_in_rule__GenericFlow__Group_6__020517 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_77_in_rule__GenericFlow__Group_6__0__Impl20545 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_6__1__Impl_in_rule__GenericFlow__Group_6__120576 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__DestinationSoftwareComponentAssignment_6_1_in_rule__GenericFlow__Group_6__1__Impl20603 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_7__0__Impl_in_rule__GenericFlow__Group_7__020637 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_7__1_in_rule__GenericFlow__Group_7__020640 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_78_in_rule__GenericFlow__Group_7__0__Impl20668 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_7__1__Impl_in_rule__GenericFlow__Group_7__120699 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__SourceSoftwareComponentAssignment_7_1_in_rule__GenericFlow__Group_7__1__Impl20726 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_8__0__Impl_in_rule__GenericFlow__Group_8__020760 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_8__1_in_rule__GenericFlow__Group_8__020763 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_79_in_rule__GenericFlow__Group_8__0__Impl20791 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_8__1__Impl_in_rule__GenericFlow__Group_8__120822 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_8__2_in_rule__GenericFlow__Group_8__120825 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__GenericFlow__Group_8__1__Impl20853 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_8__2__Impl_in_rule__GenericFlow__Group_8__220884 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_8__3_in_rule__GenericFlow__Group_8__220887 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__DestinationAddressesAssignment_8_2_in_rule__GenericFlow__Group_8__2__Impl20914 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_8__3__Impl_in_rule__GenericFlow__Group_8__320944 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_8__4_in_rule__GenericFlow__Group_8__320947 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_8_3__0_in_rule__GenericFlow__Group_8__3__Impl20974 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_8__4__Impl_in_rule__GenericFlow__Group_8__421005 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__GenericFlow__Group_8__4__Impl21033 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_8_3__0__Impl_in_rule__GenericFlow__Group_8_3__021074 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_8_3__1_in_rule__GenericFlow__Group_8_3__021077 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__GenericFlow__Group_8_3__0__Impl21105 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__Group_8_3__1__Impl_in_rule__GenericFlow__Group_8_3__121136 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericFlow__DestinationAddressesAssignment_8_3_1_in_rule__GenericFlow__Group_8_3__1__Impl21163 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__0__Impl_in_rule__NetworkProtocol__Group__021197 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__1_in_rule__NetworkProtocol__Group__021200 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__DeliveryGuaranteedAssignment_0_in_rule__NetworkProtocol__Group__0__Impl21227 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__1__Impl_in_rule__NetworkProtocol__Group__121258 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__2_in_rule__NetworkProtocol__Group__121261 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__NetworkProtocol__Group__1__Impl21289 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__2__Impl_in_rule__NetworkProtocol__Group__221320 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__3_in_rule__NetworkProtocol__Group__221323 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__NameAssignment_2_in_rule__NetworkProtocol__Group__2__Impl21350 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__3__Impl_in_rule__NetworkProtocol__Group__321380 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080008L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__4_in_rule__NetworkProtocol__Group__321383 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__NetworkProtocol__Group__3__Impl21411 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__4__Impl_in_rule__NetworkProtocol__Group__421442 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080008L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__5_in_rule__NetworkProtocol__Group__421445 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group_4__0_in_rule__NetworkProtocol__Group__4__Impl21472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__5__Impl_in_rule__NetworkProtocol__Group__521503 = new BitSet(new long[]{0x0000000000000040L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__6_in_rule__NetworkProtocol__Group__521506 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_83_in_rule__NetworkProtocol__Group__5__Impl21534 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__6__Impl_in_rule__NetworkProtocol__Group__621565 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__7_in_rule__NetworkProtocol__Group__621568 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__MtuAssignment_6_in_rule__NetworkProtocol__Group__6__Impl21595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__7__Impl_in_rule__NetworkProtocol__Group__721625 = new BitSet(new long[]{0x0000000000000040L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__8_in_rule__NetworkProtocol__Group__721628 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_84_in_rule__NetworkProtocol__Group__7__Impl21656 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__8__Impl_in_rule__NetworkProtocol__Group__821687 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__9_in_rule__NetworkProtocol__Group__821690 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__HeadersLengthAssignment_8_in_rule__NetworkProtocol__Group__8__Impl21717 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__9__Impl_in_rule__NetworkProtocol__Group__921747 = new BitSet(new long[]{0x0000000000000040L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__10_in_rule__NetworkProtocol__Group__921750 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_85_in_rule__NetworkProtocol__Group__9__Impl21778 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__10__Impl_in_rule__NetworkProtocol__Group__1021809 = new BitSet(new long[]{0x0000000020000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__11_in_rule__NetworkProtocol__Group__1021812 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__DataUnitLengthAssignment_10_in_rule__NetworkProtocol__Group__10__Impl21839 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__11__Impl_in_rule__NetworkProtocol__Group__1121869 = new BitSet(new long[]{0x0000000020000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__12_in_rule__NetworkProtocol__Group__1121872 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group_11__0_in_rule__NetworkProtocol__Group__11__Impl21899 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group__12__Impl_in_rule__NetworkProtocol__Group__1221930 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__NetworkProtocol__Group__12__Impl21958 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group_4__0__Impl_in_rule__NetworkProtocol__Group_4__022015 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group_4__1_in_rule__NetworkProtocol__Group_4__022018 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__NetworkProtocol__Group_4__0__Impl22046 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group_4__1__Impl_in_rule__NetworkProtocol__Group_4__122077 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group_4__2_in_rule__NetworkProtocol__Group_4__122080 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    private static class FollowSets001 {
+        public static final BitSet FOLLOW_23_in_rule__NetworkProtocol__Group_4__1__Impl22108 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group_4__2__Impl_in_rule__NetworkProtocol__Group_4__222139 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group_4__3_in_rule__NetworkProtocol__Group_4__222142 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__AlternativeNamesAssignment_4_2_in_rule__NetworkProtocol__Group_4__2__Impl22169 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group_4__3__Impl_in_rule__NetworkProtocol__Group_4__322199 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group_4__4_in_rule__NetworkProtocol__Group_4__322202 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group_4_3__0_in_rule__NetworkProtocol__Group_4__3__Impl22229 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group_4__4__Impl_in_rule__NetworkProtocol__Group_4__422260 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__NetworkProtocol__Group_4__4__Impl22288 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group_4_3__0__Impl_in_rule__NetworkProtocol__Group_4_3__022329 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group_4_3__1_in_rule__NetworkProtocol__Group_4_3__022332 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__NetworkProtocol__Group_4_3__0__Impl22360 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group_4_3__1__Impl_in_rule__NetworkProtocol__Group_4_3__122391 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__AlternativeNamesAssignment_4_3_1_in_rule__NetworkProtocol__Group_4_3__1__Impl22418 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group_11__0__Impl_in_rule__NetworkProtocol__Group_11__022452 = new BitSet(new long[]{0x0000000000001800L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group_11__1_in_rule__NetworkProtocol__Group_11__022455 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__NetworkProtocol__Group_11__0__Impl22483 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__Group_11__1__Impl_in_rule__NetworkProtocol__Group_11__122514 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__NetworkProtocol__ConnectionlessAssignment_11_1_in_rule__NetworkProtocol__Group_11__1__Impl22541 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EInt__Group__0__Impl_in_rule__EInt__Group__022575 = new BitSet(new long[]{0x0000000000000040L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__EInt__Group__1_in_rule__EInt__Group__022578 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__EInt__Group__0__Impl22607 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EInt__Group__1__Impl_in_rule__EInt__Group__122640 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__EInt__Group__1__Impl22667 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantDoubleVariable__Group__0__Impl_in_rule__ConstantDoubleVariable__Group__022700 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__ConstantDoubleVariable__Group__1_in_rule__ConstantDoubleVariable__Group__022703 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__ConstantDoubleVariable__Group__0__Impl22731 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantDoubleVariable__Group__1__Impl_in_rule__ConstantDoubleVariable__Group__122762 = new BitSet(new long[]{0x8000000000000000L});
+        public static final BitSet FOLLOW_rule__ConstantDoubleVariable__Group__2_in_rule__ConstantDoubleVariable__Group__122765 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__ConstantDoubleVariable__Group__1__Impl22793 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantDoubleVariable__Group__2__Impl_in_rule__ConstantDoubleVariable__Group__222824 = new BitSet(new long[]{0x0000000000000040L,0x0000000800800000L});
+        public static final BitSet FOLLOW_rule__ConstantDoubleVariable__Group__3_in_rule__ConstantDoubleVariable__Group__222827 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_63_in_rule__ConstantDoubleVariable__Group__2__Impl22855 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantDoubleVariable__Group__3__Impl_in_rule__ConstantDoubleVariable__Group__322886 = new BitSet(new long[]{0x0000000020000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_rule__ConstantDoubleVariable__Group__4_in_rule__ConstantDoubleVariable__Group__322889 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantDoubleVariable__ValueAssignment_3_in_rule__ConstantDoubleVariable__Group__3__Impl22916 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantDoubleVariable__Group__4__Impl_in_rule__ConstantDoubleVariable__Group__422946 = new BitSet(new long[]{0x0000000020000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_rule__ConstantDoubleVariable__Group__5_in_rule__ConstantDoubleVariable__Group__422949 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantDoubleVariable__Group_4__0_in_rule__ConstantDoubleVariable__Group__4__Impl22976 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantDoubleVariable__Group__5__Impl_in_rule__ConstantDoubleVariable__Group__523007 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__ConstantDoubleVariable__Group__5__Impl23035 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantDoubleVariable__Group_4__0__Impl_in_rule__ConstantDoubleVariable__Group_4__023078 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__ConstantDoubleVariable__Group_4__1_in_rule__ConstantDoubleVariable__Group_4__023081 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_89_in_rule__ConstantDoubleVariable__Group_4__0__Impl23109 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantDoubleVariable__Group_4__1__Impl_in_rule__ConstantDoubleVariable__Group_4__123140 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantDoubleVariable__UnitAssignment_4_1_in_rule__ConstantDoubleVariable__Group_4__1__Impl23167 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantLongVariable__Group__0__Impl_in_rule__ConstantLongVariable__Group__023201 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__ConstantLongVariable__Group__1_in_rule__ConstantLongVariable__Group__023204 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__ConstantLongVariable__Group__0__Impl23232 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantLongVariable__Group__1__Impl_in_rule__ConstantLongVariable__Group__123263 = new BitSet(new long[]{0x8000000000000000L});
+        public static final BitSet FOLLOW_rule__ConstantLongVariable__Group__2_in_rule__ConstantLongVariable__Group__123266 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__ConstantLongVariable__Group__1__Impl23294 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantLongVariable__Group__2__Impl_in_rule__ConstantLongVariable__Group__223325 = new BitSet(new long[]{0x0000000000000040L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__ConstantLongVariable__Group__3_in_rule__ConstantLongVariable__Group__223328 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_63_in_rule__ConstantLongVariable__Group__2__Impl23356 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantLongVariable__Group__3__Impl_in_rule__ConstantLongVariable__Group__323387 = new BitSet(new long[]{0x0000000020000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_rule__ConstantLongVariable__Group__4_in_rule__ConstantLongVariable__Group__323390 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantLongVariable__ValueAssignment_3_in_rule__ConstantLongVariable__Group__3__Impl23417 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantLongVariable__Group__4__Impl_in_rule__ConstantLongVariable__Group__423447 = new BitSet(new long[]{0x0000000020000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_rule__ConstantLongVariable__Group__5_in_rule__ConstantLongVariable__Group__423450 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantLongVariable__Group_4__0_in_rule__ConstantLongVariable__Group__4__Impl23477 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantLongVariable__Group__5__Impl_in_rule__ConstantLongVariable__Group__523508 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__ConstantLongVariable__Group__5__Impl23536 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantLongVariable__Group_4__0__Impl_in_rule__ConstantLongVariable__Group_4__023579 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__ConstantLongVariable__Group_4__1_in_rule__ConstantLongVariable__Group_4__023582 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_89_in_rule__ConstantLongVariable__Group_4__0__Impl23610 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantLongVariable__Group_4__1__Impl_in_rule__ConstantLongVariable__Group_4__123641 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstantLongVariable__UnitAssignment_4_1_in_rule__ConstantLongVariable__Group_4__1__Impl23668 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RandomVariable__Group__0__Impl_in_rule__RandomVariable__Group__023702 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__RandomVariable__Group__1_in_rule__RandomVariable__Group__023705 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__RandomVariable__Group__0__Impl23733 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RandomVariable__Group__1__Impl_in_rule__RandomVariable__Group__123764 = new BitSet(new long[]{0x0000000000000000L,0x0000000012000000L});
+        public static final BitSet FOLLOW_rule__RandomVariable__Group__2_in_rule__RandomVariable__Group__123767 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__RandomVariable__Group__1__Impl23795 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RandomVariable__Group__2__Impl_in_rule__RandomVariable__Group__223826 = new BitSet(new long[]{0x0000000000000000L,0x0000000012000000L});
+        public static final BitSet FOLLOW_rule__RandomVariable__Group__3_in_rule__RandomVariable__Group__223829 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RandomVariable__Group_2__0_in_rule__RandomVariable__Group__2__Impl23856 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RandomVariable__Group__3__Impl_in_rule__RandomVariable__Group__323887 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__RandomVariable__Group__4_in_rule__RandomVariable__Group__323890 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__RandomVariable__Group__3__Impl23918 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RandomVariable__Group__4__Impl_in_rule__RandomVariable__Group__423949 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__RandomVariable__Group__5_in_rule__RandomVariable__Group__423952 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RandomVariable__CdfAssignment_4_in_rule__RandomVariable__Group__4__Impl23979 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RandomVariable__Group__5__Impl_in_rule__RandomVariable__Group__524009 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__RandomVariable__Group__5__Impl24037 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RandomVariable__Group_2__0__Impl_in_rule__RandomVariable__Group_2__024080 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__RandomVariable__Group_2__1_in_rule__RandomVariable__Group_2__024083 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_89_in_rule__RandomVariable__Group_2__0__Impl24111 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RandomVariable__Group_2__1__Impl_in_rule__RandomVariable__Group_2__124142 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RandomVariable__UnitAssignment_2_1_in_rule__RandomVariable__Group_2__1__Impl24169 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group__0__Impl_in_rule__ContinuousFunction__Group__024203 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group__1_in_rule__ContinuousFunction__Group__024206 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__ContinuousFunction__Group__0__Impl24234 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group__1__Impl_in_rule__ContinuousFunction__Group__124265 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group__2_in_rule__ContinuousFunction__Group__124268 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__ContinuousFunction__Group__1__Impl24296 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group__2__Impl_in_rule__ContinuousFunction__Group__224327 = new BitSet(new long[]{0x0000000000000040L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group__3_in_rule__ContinuousFunction__Group__224330 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__ContinuousFunction__Group__2__Impl24358 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group__3__Impl_in_rule__ContinuousFunction__Group__324389 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group__4_in_rule__ContinuousFunction__Group__324392 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__NumArgsAssignment_3_in_rule__ContinuousFunction__Group__3__Impl24419 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group__4__Impl_in_rule__ContinuousFunction__Group__424449 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group__5_in_rule__ContinuousFunction__Group__424452 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_95_in_rule__ContinuousFunction__Group__4__Impl24480 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group__5__Impl_in_rule__ContinuousFunction__Group__524511 = new BitSet(new long[]{0x0000000020000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group__6_in_rule__ContinuousFunction__Group__524514 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__EquationAssignment_5_in_rule__ContinuousFunction__Group__5__Impl24541 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group__6__Impl_in_rule__ContinuousFunction__Group__624571 = new BitSet(new long[]{0x0000000020000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group__7_in_rule__ContinuousFunction__Group__624574 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group_6__0_in_rule__ContinuousFunction__Group__6__Impl24601 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group__7__Impl_in_rule__ContinuousFunction__Group__724632 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__ContinuousFunction__Group__7__Impl24660 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group_6__0__Impl_in_rule__ContinuousFunction__Group_6__024707 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group_6__1_in_rule__ContinuousFunction__Group_6__024710 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_89_in_rule__ContinuousFunction__Group_6__0__Impl24738 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__Group_6__1__Impl_in_rule__ContinuousFunction__Group_6__124769 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ContinuousFunction__UnitAssignment_6_1_in_rule__ContinuousFunction__Group_6__1__Impl24796 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__0__Impl_in_rule__DiscreteFunction__Group__024830 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__1_in_rule__DiscreteFunction__Group__024833 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_96_in_rule__DiscreteFunction__Group__0__Impl24861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__1__Impl_in_rule__DiscreteFunction__Group__124892 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__2_in_rule__DiscreteFunction__Group__124895 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__DiscreteFunction__Group__1__Impl24923 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__2__Impl_in_rule__DiscreteFunction__Group__224954 = new BitSet(new long[]{0x0000000000000040L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__3_in_rule__DiscreteFunction__Group__224957 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DiscreteFunction__Group__2__Impl24985 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__3__Impl_in_rule__DiscreteFunction__Group__325016 = new BitSet(new long[]{0x0000000000000000L,0x0000000202000000L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__4_in_rule__DiscreteFunction__Group__325019 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__NumArgsAssignment_3_in_rule__DiscreteFunction__Group__3__Impl25046 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__4__Impl_in_rule__DiscreteFunction__Group__425076 = new BitSet(new long[]{0x0000000000000000L,0x0000000202000000L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__5_in_rule__DiscreteFunction__Group__425079 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group_4__0_in_rule__DiscreteFunction__Group__4__Impl25106 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__5__Impl_in_rule__DiscreteFunction__Group__525137 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__6_in_rule__DiscreteFunction__Group__525140 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_97_in_rule__DiscreteFunction__Group__5__Impl25168 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__6__Impl_in_rule__DiscreteFunction__Group__625199 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__7_in_rule__DiscreteFunction__Group__625202 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__DiscreteFunction__Group__6__Impl25230 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__7__Impl_in_rule__DiscreteFunction__Group__725261 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__8_in_rule__DiscreteFunction__Group__725264 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__XAssignment_7_in_rule__DiscreteFunction__Group__7__Impl25291 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__8__Impl_in_rule__DiscreteFunction__Group__825321 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__9_in_rule__DiscreteFunction__Group__825324 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group_8__0_in_rule__DiscreteFunction__Group__8__Impl25351 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__9__Impl_in_rule__DiscreteFunction__Group__925382 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__10_in_rule__DiscreteFunction__Group__925385 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__DiscreteFunction__Group__9__Impl25413 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__10__Impl_in_rule__DiscreteFunction__Group__1025444 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__11_in_rule__DiscreteFunction__Group__1025447 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_98_in_rule__DiscreteFunction__Group__10__Impl25475 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__11__Impl_in_rule__DiscreteFunction__Group__1125506 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__12_in_rule__DiscreteFunction__Group__1125509 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__YAssignment_11_in_rule__DiscreteFunction__Group__11__Impl25536 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group__12__Impl_in_rule__DiscreteFunction__Group__1225566 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__DiscreteFunction__Group__12__Impl25594 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group_4__0__Impl_in_rule__DiscreteFunction__Group_4__025651 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group_4__1_in_rule__DiscreteFunction__Group_4__025654 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_89_in_rule__DiscreteFunction__Group_4__0__Impl25682 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group_4__1__Impl_in_rule__DiscreteFunction__Group_4__125713 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__UnitAssignment_4_1_in_rule__DiscreteFunction__Group_4__1__Impl25740 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group_8__0__Impl_in_rule__DiscreteFunction__Group_8__025774 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group_8__1_in_rule__DiscreteFunction__Group_8__025777 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__DiscreteFunction__Group_8__0__Impl25805 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__Group_8__1__Impl_in_rule__DiscreteFunction__Group_8__125836 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DiscreteFunction__XAssignment_8_1_in_rule__DiscreteFunction__Group_8__1__Impl25863 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EFloat__Group__0__Impl_in_rule__EFloat__Group__025897 = new BitSet(new long[]{0x0000000000000040L,0x0000000800000000L});
+        public static final BitSet FOLLOW_rule__EFloat__Group__1_in_rule__EFloat__Group__025900 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__EFloat__Group__0__Impl25929 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EFloat__Group__1__Impl_in_rule__EFloat__Group__125962 = new BitSet(new long[]{0x0000000000000040L,0x0000000800000000L});
+        public static final BitSet FOLLOW_rule__EFloat__Group__2_in_rule__EFloat__Group__125965 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__EFloat__Group__1__Impl25993 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EFloat__Group__2__Impl_in_rule__EFloat__Group__226024 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__EFloat__Group__3_in_rule__EFloat__Group__226027 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__EFloat__Group__2__Impl26055 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EFloat__Group__3__Impl_in_rule__EFloat__Group__326086 = new BitSet(new long[]{0x0000000000006000L});
+        public static final BitSet FOLLOW_rule__EFloat__Group__4_in_rule__EFloat__Group__326089 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__EFloat__Group__3__Impl26116 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EFloat__Group__4__Impl_in_rule__EFloat__Group__426145 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EFloat__Group_4__0_in_rule__EFloat__Group__4__Impl26172 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EFloat__Group_4__0__Impl_in_rule__EFloat__Group_4__026213 = new BitSet(new long[]{0x0000000000000040L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__EFloat__Group_4__1_in_rule__EFloat__Group_4__026216 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EFloat__Alternatives_4_0_in_rule__EFloat__Group_4__0__Impl26243 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EFloat__Group_4__1__Impl_in_rule__EFloat__Group_4__126273 = new BitSet(new long[]{0x0000000000000040L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__EFloat__Group_4__2_in_rule__EFloat__Group_4__126276 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__EFloat__Group_4__1__Impl26305 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EFloat__Group_4__2__Impl_in_rule__EFloat__Group_4__226338 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__EFloat__Group_4__2__Impl26365 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__Group__0__Impl_in_rule__SpeedUnit__Group__026400 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__Group__1_in_rule__SpeedUnit__Group__026403 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_100_in_rule__SpeedUnit__Group__0__Impl26431 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__Group__1__Impl_in_rule__SpeedUnit__Group__126462 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__Group__2_in_rule__SpeedUnit__Group__126465 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__SpeedUnit__Group__1__Impl26493 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__Group__2__Impl_in_rule__SpeedUnit__Group__226524 = new BitSet(new long[]{0x0000000000078000L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__Group__3_in_rule__SpeedUnit__Group__226527 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_101_in_rule__SpeedUnit__Group__2__Impl26555 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__Group__3__Impl_in_rule__SpeedUnit__Group__326586 = new BitSet(new long[]{0x8000000000000000L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__Group__4_in_rule__SpeedUnit__Group__326589 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__PrefixAssignment_3_in_rule__SpeedUnit__Group__3__Impl26616 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__Group__4__Impl_in_rule__SpeedUnit__Group__426646 = new BitSet(new long[]{0x0000000000000040L,0x0000000800800000L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__Group__5_in_rule__SpeedUnit__Group__426649 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_63_in_rule__SpeedUnit__Group__4__Impl26677 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__Group__5__Impl_in_rule__SpeedUnit__Group__526708 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__Group__6_in_rule__SpeedUnit__Group__526711 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__ValueAssignment_5_in_rule__SpeedUnit__Group__5__Impl26738 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__Group__6__Impl_in_rule__SpeedUnit__Group__626768 = new BitSet(new long[]{0x0000000000380000L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__Group__7_in_rule__SpeedUnit__Group__626771 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_89_in_rule__SpeedUnit__Group__6__Impl26799 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__Group__7__Impl_in_rule__SpeedUnit__Group__726830 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__Group__8_in_rule__SpeedUnit__Group__726833 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__UnitAssignment_7_in_rule__SpeedUnit__Group__7__Impl26860 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SpeedUnit__Group__8__Impl_in_rule__SpeedUnit__Group__826890 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__SpeedUnit__Group__8__Impl26918 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EDouble__Group__0__Impl_in_rule__EDouble__Group__026967 = new BitSet(new long[]{0x0000000000000040L,0x0000000800800000L});
+        public static final BitSet FOLLOW_rule__EDouble__Group__1_in_rule__EDouble__Group__026970 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__EDouble__Group__0__Impl26999 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EDouble__Group__1__Impl_in_rule__EDouble__Group__127032 = new BitSet(new long[]{0x0000000000000040L,0x0000000800800000L});
+        public static final BitSet FOLLOW_rule__EDouble__Group__2_in_rule__EDouble__Group__127035 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__EDouble__Group__1__Impl27063 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EDouble__Group__2__Impl_in_rule__EDouble__Group__227094 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__EDouble__Group__3_in_rule__EDouble__Group__227097 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__EDouble__Group__2__Impl27125 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EDouble__Group__3__Impl_in_rule__EDouble__Group__327156 = new BitSet(new long[]{0x0000000000006000L});
+        public static final BitSet FOLLOW_rule__EDouble__Group__4_in_rule__EDouble__Group__327159 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__EDouble__Group__3__Impl27186 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EDouble__Group__4__Impl_in_rule__EDouble__Group__427215 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EDouble__Group_4__0_in_rule__EDouble__Group__4__Impl27242 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EDouble__Group_4__0__Impl_in_rule__EDouble__Group_4__027283 = new BitSet(new long[]{0x0000000000000040L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__EDouble__Group_4__1_in_rule__EDouble__Group_4__027286 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EDouble__Alternatives_4_0_in_rule__EDouble__Group_4__0__Impl27313 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EDouble__Group_4__1__Impl_in_rule__EDouble__Group_4__127343 = new BitSet(new long[]{0x0000000000000040L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__EDouble__Group_4__2_in_rule__EDouble__Group_4__127346 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__EDouble__Group_4__1__Impl27375 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EDouble__Group_4__2__Impl_in_rule__EDouble__Group_4__227408 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__EDouble__Group_4__2__Impl27435 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ELong__Group__0__Impl_in_rule__ELong__Group__027470 = new BitSet(new long[]{0x0000000000000040L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__ELong__Group__1_in_rule__ELong__Group__027473 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__ELong__Group__0__Impl27502 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ELong__Group__1__Impl_in_rule__ELong__Group__127535 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__ELong__Group__1__Impl27562 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group__0__Impl_in_rule__DataSeries__Group__027595 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group__1_in_rule__DataSeries__Group__027598 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group__1__Impl_in_rule__DataSeries__Group__127656 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group__2_in_rule__DataSeries__Group__127659 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__DataSeries__Group__1__Impl27687 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group__2__Impl_in_rule__DataSeries__Group__227718 = new BitSet(new long[]{0x0000000020000000L,0x0000008000000000L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group__3_in_rule__DataSeries__Group__227721 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__DataSeries__Group__2__Impl27749 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group__3__Impl_in_rule__DataSeries__Group__327780 = new BitSet(new long[]{0x0000000020000000L,0x0000008000000000L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group__4_in_rule__DataSeries__Group__327783 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group_3__0_in_rule__DataSeries__Group__3__Impl27810 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group__4__Impl_in_rule__DataSeries__Group__427841 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__DataSeries__Group__4__Impl27869 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group_3__0__Impl_in_rule__DataSeries__Group_3__027910 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group_3__1_in_rule__DataSeries__Group_3__027913 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_103_in_rule__DataSeries__Group_3__0__Impl27941 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group_3__1__Impl_in_rule__DataSeries__Group_3__127972 = new BitSet(new long[]{0x0000000000000040L,0x0000000800800000L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group_3__2_in_rule__DataSeries__Group_3__127975 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__DataSeries__Group_3__1__Impl28003 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group_3__2__Impl_in_rule__DataSeries__Group_3__228034 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group_3__3_in_rule__DataSeries__Group_3__228037 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataSeries__DataAssignment_3_2_in_rule__DataSeries__Group_3__2__Impl28064 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group_3__3__Impl_in_rule__DataSeries__Group_3__328094 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group_3__4_in_rule__DataSeries__Group_3__328097 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group_3_3__0_in_rule__DataSeries__Group_3__3__Impl28124 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group_3__4__Impl_in_rule__DataSeries__Group_3__428155 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__DataSeries__Group_3__4__Impl28183 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group_3_3__0__Impl_in_rule__DataSeries__Group_3_3__028224 = new BitSet(new long[]{0x0000000000000040L,0x0000000800800000L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group_3_3__1_in_rule__DataSeries__Group_3_3__028227 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__DataSeries__Group_3_3__0__Impl28255 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataSeries__Group_3_3__1__Impl_in_rule__DataSeries__Group_3_3__128286 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataSeries__DataAssignment_3_3_1_in_rule__DataSeries__Group_3_3__1__Impl28313 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__0__Impl_in_rule__TrafficSource__Group__028347 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__1_in_rule__TrafficSource__Group__028350 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_104_in_rule__TrafficSource__Group__0__Impl28378 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__1__Impl_in_rule__TrafficSource__Group__128409 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__2_in_rule__TrafficSource__Group__128412 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__IdAssignment_1_in_rule__TrafficSource__Group__1__Impl28439 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__2__Impl_in_rule__TrafficSource__Group__228469 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__3_in_rule__TrafficSource__Group__228472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__TrafficSource__Group__2__Impl28500 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__3__Impl_in_rule__TrafficSource__Group__328531 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__4_in_rule__TrafficSource__Group__328534 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_rule__TrafficSource__Group__3__Impl28562 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__4__Impl_in_rule__TrafficSource__Group__428593 = new BitSet(new long[]{0x0000000000000000L,0x0000060000000008L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__5_in_rule__TrafficSource__Group__428596 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__NameAssignment_4_in_rule__TrafficSource__Group__4__Impl28623 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__5__Impl_in_rule__TrafficSource__Group__528653 = new BitSet(new long[]{0x0000000000000000L,0x0000060000000008L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__6_in_rule__TrafficSource__Group__528656 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_5__0_in_rule__TrafficSource__Group__5__Impl28683 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__6__Impl_in_rule__TrafficSource__Group__628714 = new BitSet(new long[]{0x0000000000000000L,0x0000060000000008L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__7_in_rule__TrafficSource__Group__628717 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_6__0_in_rule__TrafficSource__Group__6__Impl28744 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__7__Impl_in_rule__TrafficSource__Group__728775 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__8_in_rule__TrafficSource__Group__728778 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_105_in_rule__TrafficSource__Group__7__Impl28806 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__8__Impl_in_rule__TrafficSource__Group__828837 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__9_in_rule__TrafficSource__Group__828840 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__TrafficSource__Group__8__Impl28868 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__9__Impl_in_rule__TrafficSource__Group__928899 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__10_in_rule__TrafficSource__Group__928902 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__WorkloadAssignment_9_in_rule__TrafficSource__Group__9__Impl28929 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__10__Impl_in_rule__TrafficSource__Group__1028959 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__11_in_rule__TrafficSource__Group__1028962 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_10__0_in_rule__TrafficSource__Group__10__Impl28989 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__11__Impl_in_rule__TrafficSource__Group__1129020 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__12_in_rule__TrafficSource__Group__1129023 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__TrafficSource__Group__11__Impl29051 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group__12__Impl_in_rule__TrafficSource__Group__1229082 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__TrafficSource__Group__12__Impl29110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_5__0__Impl_in_rule__TrafficSource__Group_5__029167 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_5__1_in_rule__TrafficSource__Group_5__029170 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__TrafficSource__Group_5__0__Impl29198 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_5__1__Impl_in_rule__TrafficSource__Group_5__129229 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_5__2_in_rule__TrafficSource__Group_5__129232 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__TrafficSource__Group_5__1__Impl29260 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_5__2__Impl_in_rule__TrafficSource__Group_5__229291 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_5__3_in_rule__TrafficSource__Group_5__229294 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__AlternativeNamesAssignment_5_2_in_rule__TrafficSource__Group_5__2__Impl29321 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_5__3__Impl_in_rule__TrafficSource__Group_5__329351 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_5__4_in_rule__TrafficSource__Group_5__329354 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_5_3__0_in_rule__TrafficSource__Group_5__3__Impl29381 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_5__4__Impl_in_rule__TrafficSource__Group_5__429412 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__TrafficSource__Group_5__4__Impl29440 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_5_3__0__Impl_in_rule__TrafficSource__Group_5_3__029481 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_5_3__1_in_rule__TrafficSource__Group_5_3__029484 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__TrafficSource__Group_5_3__0__Impl29512 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_5_3__1__Impl_in_rule__TrafficSource__Group_5_3__129543 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__AlternativeNamesAssignment_5_3_1_in_rule__TrafficSource__Group_5_3__1__Impl29570 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_6__0__Impl_in_rule__TrafficSource__Group_6__029604 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_6__1_in_rule__TrafficSource__Group_6__029607 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_106_in_rule__TrafficSource__Group_6__0__Impl29635 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_6__1__Impl_in_rule__TrafficSource__Group_6__129666 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_6__2_in_rule__TrafficSource__Group_6__129669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__TrafficSource__Group_6__1__Impl29697 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_6__2__Impl_in_rule__TrafficSource__Group_6__229728 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_6__3_in_rule__TrafficSource__Group_6__229731 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__AddressesAssignment_6_2_in_rule__TrafficSource__Group_6__2__Impl29758 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_6__3__Impl_in_rule__TrafficSource__Group_6__329788 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_6__4_in_rule__TrafficSource__Group_6__329791 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_6_3__0_in_rule__TrafficSource__Group_6__3__Impl29818 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_6__4__Impl_in_rule__TrafficSource__Group_6__429849 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__TrafficSource__Group_6__4__Impl29877 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_6_3__0__Impl_in_rule__TrafficSource__Group_6_3__029918 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_6_3__1_in_rule__TrafficSource__Group_6_3__029921 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__TrafficSource__Group_6_3__0__Impl29949 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_6_3__1__Impl_in_rule__TrafficSource__Group_6_3__129980 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__AddressesAssignment_6_3_1_in_rule__TrafficSource__Group_6_3__1__Impl30007 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_10__0__Impl_in_rule__TrafficSource__Group_10__030041 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_10__1_in_rule__TrafficSource__Group_10__030044 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__TrafficSource__Group_10__0__Impl30072 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__Group_10__1__Impl_in_rule__TrafficSource__Group_10__130103 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TrafficSource__WorkloadAssignment_10_1_in_rule__TrafficSource__Group_10__1__Impl30130 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group__0__Impl_in_rule__GenericWorkload__Group__030164 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group__1_in_rule__GenericWorkload__Group__030167 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group__1__Impl_in_rule__GenericWorkload__Group__130225 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group__2_in_rule__GenericWorkload__Group__130228 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_107_in_rule__GenericWorkload__Group__1__Impl30256 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group__2__Impl_in_rule__GenericWorkload__Group__230287 = new BitSet(new long[]{0x0000000020000000L,0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group__3_in_rule__GenericWorkload__Group__230290 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__GenericWorkload__Group__2__Impl30318 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group__3__Impl_in_rule__GenericWorkload__Group__330349 = new BitSet(new long[]{0x0000000020000000L,0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group__4_in_rule__GenericWorkload__Group__330352 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group_3__0_in_rule__GenericWorkload__Group__3__Impl30379 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group__4__Impl_in_rule__GenericWorkload__Group__430410 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__GenericWorkload__Group__4__Impl30438 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group_3__0__Impl_in_rule__GenericWorkload__Group_3__030479 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group_3__1_in_rule__GenericWorkload__Group_3__030482 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_108_in_rule__GenericWorkload__Group_3__0__Impl30510 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group_3__1__Impl_in_rule__GenericWorkload__Group_3__130541 = new BitSet(new long[]{0x0000000000000000L,0x005EA00000000000L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group_3__2_in_rule__GenericWorkload__Group_3__130544 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__GenericWorkload__Group_3__1__Impl30572 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group_3__2__Impl_in_rule__GenericWorkload__Group_3__230603 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group_3__3_in_rule__GenericWorkload__Group_3__230606 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__ActionsAssignment_3_2_in_rule__GenericWorkload__Group_3__2__Impl30633 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group_3__3__Impl_in_rule__GenericWorkload__Group_3__330663 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group_3__4_in_rule__GenericWorkload__Group_3__330666 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group_3_3__0_in_rule__GenericWorkload__Group_3__3__Impl30693 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group_3__4__Impl_in_rule__GenericWorkload__Group_3__430724 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__GenericWorkload__Group_3__4__Impl30752 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group_3_3__0__Impl_in_rule__GenericWorkload__Group_3_3__030793 = new BitSet(new long[]{0x0000000000000000L,0x005EA00000000000L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group_3_3__1_in_rule__GenericWorkload__Group_3_3__030796 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__GenericWorkload__Group_3_3__0__Impl30824 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__Group_3_3__1__Impl_in_rule__GenericWorkload__Group_3_3__130855 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__GenericWorkload__ActionsAssignment_3_3_1_in_rule__GenericWorkload__Group_3_3__1__Impl30882 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group__0__Impl_in_rule__BranchAction__Group__030916 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group__1_in_rule__BranchAction__Group__030919 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_109_in_rule__BranchAction__Group__0__Impl30947 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group__1__Impl_in_rule__BranchAction__Group__130978 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group__2_in_rule__BranchAction__Group__130981 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__BranchAction__Group__1__Impl31009 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group__2__Impl_in_rule__BranchAction__Group__231040 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group__3_in_rule__BranchAction__Group__231043 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_110_in_rule__BranchAction__Group__2__Impl31071 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group__3__Impl_in_rule__BranchAction__Group__331102 = new BitSet(new long[]{0x0000000000000000L,0x005EA00000000000L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group__4_in_rule__BranchAction__Group__331105 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__BranchAction__Group__3__Impl31133 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group__4__Impl_in_rule__BranchAction__Group__431164 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group__5_in_rule__BranchAction__Group__431167 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BranchAction__InternAssignment_4_in_rule__BranchAction__Group__4__Impl31194 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group__5__Impl_in_rule__BranchAction__Group__531224 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group__6_in_rule__BranchAction__Group__531227 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group_5__0_in_rule__BranchAction__Group__5__Impl31254 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group__6__Impl_in_rule__BranchAction__Group__631285 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group__7_in_rule__BranchAction__Group__631288 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__BranchAction__Group__6__Impl31316 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group__7__Impl_in_rule__BranchAction__Group__731347 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__BranchAction__Group__7__Impl31375 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group_5__0__Impl_in_rule__BranchAction__Group_5__031422 = new BitSet(new long[]{0x0000000000000000L,0x005EA00000000000L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group_5__1_in_rule__BranchAction__Group_5__031425 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__BranchAction__Group_5__0__Impl31453 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BranchAction__Group_5__1__Impl_in_rule__BranchAction__Group_5__131484 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BranchAction__InternAssignment_5_1_in_rule__BranchAction__Group_5__1__Impl31511 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LoopAction__Group__0__Impl_in_rule__LoopAction__Group__031545 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__LoopAction__Group__1_in_rule__LoopAction__Group__031548 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_111_in_rule__LoopAction__Group__0__Impl31576 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LoopAction__Group__1__Impl_in_rule__LoopAction__Group__131607 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+        public static final BitSet FOLLOW_rule__LoopAction__Group__2_in_rule__LoopAction__Group__131610 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__LoopAction__Group__1__Impl31638 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LoopAction__Group__2__Impl_in_rule__LoopAction__Group__231669 = new BitSet(new long[]{0x0000000000000000L,0x005EA00000000000L});
+        public static final BitSet FOLLOW_rule__LoopAction__Group__3_in_rule__LoopAction__Group__231672 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_110_in_rule__LoopAction__Group__2__Impl31700 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LoopAction__Group__3__Impl_in_rule__LoopAction__Group__331731 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__LoopAction__Group__4_in_rule__LoopAction__Group__331734 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LoopAction__InternAssignment_3_in_rule__LoopAction__Group__3__Impl31761 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LoopAction__Group__4__Impl_in_rule__LoopAction__Group__431791 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__LoopAction__Group__5_in_rule__LoopAction__Group__431794 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_112_in_rule__LoopAction__Group__4__Impl31822 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LoopAction__Group__5__Impl_in_rule__LoopAction__Group__531853 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__LoopAction__Group__6_in_rule__LoopAction__Group__531856 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LoopAction__NumIterationsAssignment_5_in_rule__LoopAction__Group__5__Impl31883 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LoopAction__Group__6__Impl_in_rule__LoopAction__Group__631913 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__LoopAction__Group__6__Impl31941 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group__0__Impl_in_rule__SequenceAction__Group__031986 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group__1_in_rule__SequenceAction__Group__031989 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__SequenceAction__Group__0__Impl32017 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group__1__Impl_in_rule__SequenceAction__Group__132048 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group__2_in_rule__SequenceAction__Group__132051 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__SequenceAction__Group__1__Impl32079 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group__2__Impl_in_rule__SequenceAction__Group__232110 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group__3_in_rule__SequenceAction__Group__232113 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_110_in_rule__SequenceAction__Group__2__Impl32141 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group__3__Impl_in_rule__SequenceAction__Group__332172 = new BitSet(new long[]{0x0000000000000000L,0x005EA00000000000L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group__4_in_rule__SequenceAction__Group__332175 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__SequenceAction__Group__3__Impl32203 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group__4__Impl_in_rule__SequenceAction__Group__432234 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group__5_in_rule__SequenceAction__Group__432237 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SequenceAction__InternAssignment_4_in_rule__SequenceAction__Group__4__Impl32264 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group__5__Impl_in_rule__SequenceAction__Group__532294 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group__6_in_rule__SequenceAction__Group__532297 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group_5__0_in_rule__SequenceAction__Group__5__Impl32324 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group__6__Impl_in_rule__SequenceAction__Group__632355 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group__7_in_rule__SequenceAction__Group__632358 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__SequenceAction__Group__6__Impl32386 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group__7__Impl_in_rule__SequenceAction__Group__732417 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__SequenceAction__Group__7__Impl32445 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group_5__0__Impl_in_rule__SequenceAction__Group_5__032492 = new BitSet(new long[]{0x0000000000000000L,0x005EA00000000000L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group_5__1_in_rule__SequenceAction__Group_5__032495 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__SequenceAction__Group_5__0__Impl32523 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SequenceAction__Group_5__1__Impl_in_rule__SequenceAction__Group_5__132554 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__SequenceAction__InternAssignment_5_1_in_rule__SequenceAction__Group_5__1__Impl32581 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StartAction__Group__0__Impl_in_rule__StartAction__Group__032615 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__StartAction__Group__1_in_rule__StartAction__Group__032618 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StartAction__Group__1__Impl_in_rule__StartAction__Group__132676 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__StartAction__Group__1__Impl32704 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StopAction__Group__0__Impl_in_rule__StopAction__Group__032739 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+        public static final BitSet FOLLOW_rule__StopAction__Group__1_in_rule__StopAction__Group__032742 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__StopAction__Group__1__Impl_in_rule__StopAction__Group__132800 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__StopAction__Group__1__Impl32828 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TransmitAction__Group__0__Impl_in_rule__TransmitAction__Group__032863 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__TransmitAction__Group__1_in_rule__TransmitAction__Group__032866 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_116_in_rule__TransmitAction__Group__0__Impl32894 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TransmitAction__Group__1__Impl_in_rule__TransmitAction__Group__132925 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
+        public static final BitSet FOLLOW_rule__TransmitAction__Group__2_in_rule__TransmitAction__Group__132928 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__TransmitAction__Group__1__Impl32956 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TransmitAction__Group__2__Impl_in_rule__TransmitAction__Group__232987 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__TransmitAction__Group__3_in_rule__TransmitAction__Group__232990 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_117_in_rule__TransmitAction__Group__2__Impl33018 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TransmitAction__Group__3__Impl_in_rule__TransmitAction__Group__333049 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__TransmitAction__Group__4_in_rule__TransmitAction__Group__333052 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TransmitAction__FlowAssignment_3_in_rule__TransmitAction__Group__3__Impl33079 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TransmitAction__Group__4__Impl_in_rule__TransmitAction__Group__433109 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__TransmitAction__Group__4__Impl33137 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__WaitAction__Group__0__Impl_in_rule__WaitAction__Group__033178 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__WaitAction__Group__1_in_rule__WaitAction__Group__033181 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_118_in_rule__WaitAction__Group__0__Impl33209 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__WaitAction__Group__1__Impl_in_rule__WaitAction__Group__133240 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
+        public static final BitSet FOLLOW_rule__WaitAction__Group__2_in_rule__WaitAction__Group__133243 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__WaitAction__Group__1__Impl33271 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__WaitAction__Group__2__Impl_in_rule__WaitAction__Group__233302 = new BitSet(new long[]{0x0000000000000000L,0x000000012D000000L});
+        public static final BitSet FOLLOW_rule__WaitAction__Group__3_in_rule__WaitAction__Group__233305 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_119_in_rule__WaitAction__Group__2__Impl33333 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__WaitAction__Group__3__Impl_in_rule__WaitAction__Group__333364 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__WaitAction__Group__4_in_rule__WaitAction__Group__333367 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__WaitAction__WaitTimeAssignment_3_in_rule__WaitAction__Group__3__Impl33394 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__WaitAction__Group__4__Impl_in_rule__WaitAction__Group__433424 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__WaitAction__Group__4__Impl33452 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__0__Impl_in_rule__VirtualNode__Group__033494 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__1_in_rule__VirtualNode__Group__033497 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_120_in_rule__VirtualNode__Group__0__Impl33525 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__1__Impl_in_rule__VirtualNode__Group__133556 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__2_in_rule__VirtualNode__Group__133559 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__IdAssignment_1_in_rule__VirtualNode__Group__1__Impl33586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__2__Impl_in_rule__VirtualNode__Group__233616 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__3_in_rule__VirtualNode__Group__233619 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__VirtualNode__Group__2__Impl33647 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__3__Impl_in_rule__VirtualNode__Group__333678 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__4_in_rule__VirtualNode__Group__333681 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_rule__VirtualNode__Group__3__Impl33709 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__4__Impl_in_rule__VirtualNode__Group__433740 = new BitSet(new long[]{0x0080000000000000L,0x0200000000000008L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__5_in_rule__VirtualNode__Group__433743 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__NameAssignment_4_in_rule__VirtualNode__Group__4__Impl33770 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__5__Impl_in_rule__VirtualNode__Group__533800 = new BitSet(new long[]{0x0080000000000000L,0x0200000000000008L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__6_in_rule__VirtualNode__Group__533803 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_5__0_in_rule__VirtualNode__Group__5__Impl33830 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__6__Impl_in_rule__VirtualNode__Group__633861 = new BitSet(new long[]{0x0080000000000000L,0x0200000000000008L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__7_in_rule__VirtualNode__Group__633864 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_6__0_in_rule__VirtualNode__Group__6__Impl33891 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__7__Impl_in_rule__VirtualNode__Group__733922 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__8_in_rule__VirtualNode__Group__733925 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_121_in_rule__VirtualNode__Group__7__Impl33953 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__8__Impl_in_rule__VirtualNode__Group__833984 = new BitSet(new long[]{0x0000000000000000L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__9_in_rule__VirtualNode__Group__833987 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__HostedOnAssignment_8_in_rule__VirtualNode__Group__8__Impl34014 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__9__Impl_in_rule__VirtualNode__Group__934044 = new BitSet(new long[]{0x0008066100000000L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__10_in_rule__VirtualNode__Group__934047 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_122_in_rule__VirtualNode__Group__9__Impl34075 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__10__Impl_in_rule__VirtualNode__Group__1034106 = new BitSet(new long[]{0x0000000020000000L,0x2000000000000000L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__11_in_rule__VirtualNode__Group__1034109 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__PerformanceAssignment_10_in_rule__VirtualNode__Group__10__Impl34136 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__11__Impl_in_rule__VirtualNode__Group__1134166 = new BitSet(new long[]{0x0000000020000000L,0x2000000000000000L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__12_in_rule__VirtualNode__Group__1134169 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_11__0_in_rule__VirtualNode__Group__11__Impl34196 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group__12__Impl_in_rule__VirtualNode__Group__1234227 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__VirtualNode__Group__12__Impl34255 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_5__0__Impl_in_rule__VirtualNode__Group_5__034312 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_5__1_in_rule__VirtualNode__Group_5__034315 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__VirtualNode__Group_5__0__Impl34343 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_5__1__Impl_in_rule__VirtualNode__Group_5__134374 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_5__2_in_rule__VirtualNode__Group_5__134377 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__VirtualNode__Group_5__1__Impl34405 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_5__2__Impl_in_rule__VirtualNode__Group_5__234436 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_5__3_in_rule__VirtualNode__Group_5__234439 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__AlternativeNamesAssignment_5_2_in_rule__VirtualNode__Group_5__2__Impl34466 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_5__3__Impl_in_rule__VirtualNode__Group_5__334496 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_5__4_in_rule__VirtualNode__Group_5__334499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_5_3__0_in_rule__VirtualNode__Group_5__3__Impl34526 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_5__4__Impl_in_rule__VirtualNode__Group_5__434557 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__VirtualNode__Group_5__4__Impl34585 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_5_3__0__Impl_in_rule__VirtualNode__Group_5_3__034626 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_5_3__1_in_rule__VirtualNode__Group_5_3__034629 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__VirtualNode__Group_5_3__0__Impl34657 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_5_3__1__Impl_in_rule__VirtualNode__Group_5_3__134688 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__AlternativeNamesAssignment_5_3_1_in_rule__VirtualNode__Group_5_3__1__Impl34715 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_6__0__Impl_in_rule__VirtualNode__Group_6__034749 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_6__1_in_rule__VirtualNode__Group_6__034752 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_55_in_rule__VirtualNode__Group_6__0__Impl34780 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_6__1__Impl_in_rule__VirtualNode__Group_6__134811 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_6__2_in_rule__VirtualNode__Group_6__134814 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_123_in_rule__VirtualNode__Group_6__1__Impl34842 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_6__2__Impl_in_rule__VirtualNode__Group_6__234873 = new BitSet(new long[]{0x0000000080000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_6__3_in_rule__VirtualNode__Group_6__234876 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__SoftwareAssignment_6_2_in_rule__VirtualNode__Group_6__2__Impl34903 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_6__3__Impl_in_rule__VirtualNode__Group_6__334933 = new BitSet(new long[]{0x0000000080000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_6__4_in_rule__VirtualNode__Group_6__334936 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_6_3__0_in_rule__VirtualNode__Group_6__3__Impl34963 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_6__4__Impl_in_rule__VirtualNode__Group_6__434994 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_124_in_rule__VirtualNode__Group_6__4__Impl35022 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_6_3__0__Impl_in_rule__VirtualNode__Group_6_3__035063 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_6_3__1_in_rule__VirtualNode__Group_6_3__035066 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__VirtualNode__Group_6_3__0__Impl35094 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_6_3__1__Impl_in_rule__VirtualNode__Group_6_3__135125 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__SoftwareAssignment_6_3_1_in_rule__VirtualNode__Group_6_3__1__Impl35152 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_11__0__Impl_in_rule__VirtualNode__Group_11__035186 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_11__1_in_rule__VirtualNode__Group_11__035189 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_125_in_rule__VirtualNode__Group_11__0__Impl35217 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_11__1__Impl_in_rule__VirtualNode__Group_11__135248 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000040000000L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_11__2_in_rule__VirtualNode__Group_11__135251 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__VirtualNode__Group_11__1__Impl35279 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_11__2__Impl_in_rule__VirtualNode__Group_11__235310 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_11__3_in_rule__VirtualNode__Group_11__235313 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__InterfacesAssignment_11_2_in_rule__VirtualNode__Group_11__2__Impl35340 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_11__3__Impl_in_rule__VirtualNode__Group_11__335370 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_11__4_in_rule__VirtualNode__Group_11__335373 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_11_3__0_in_rule__VirtualNode__Group_11__3__Impl35400 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_11__4__Impl_in_rule__VirtualNode__Group_11__435431 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__VirtualNode__Group_11__4__Impl35459 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_11_3__0__Impl_in_rule__VirtualNode__Group_11_3__035500 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000040000000L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_11_3__1_in_rule__VirtualNode__Group_11_3__035503 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__VirtualNode__Group_11_3__0__Impl35531 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__Group_11_3__1__Impl_in_rule__VirtualNode__Group_11_3__135562 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNode__InterfacesAssignment_11_3_1_in_rule__VirtualNode__Group_11_3__1__Impl35589 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__0__Impl_in_rule__PhysicalNode__Group__035623 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__1_in_rule__PhysicalNode__Group__035626 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_126_in_rule__PhysicalNode__Group__0__Impl35654 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__1__Impl_in_rule__PhysicalNode__Group__135685 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__2_in_rule__PhysicalNode__Group__135688 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__IdAssignment_1_in_rule__PhysicalNode__Group__1__Impl35715 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__2__Impl_in_rule__PhysicalNode__Group__235745 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__3_in_rule__PhysicalNode__Group__235748 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__PhysicalNode__Group__2__Impl35776 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__3__Impl_in_rule__PhysicalNode__Group__335807 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__4_in_rule__PhysicalNode__Group__335810 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_rule__PhysicalNode__Group__3__Impl35838 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__4__Impl_in_rule__PhysicalNode__Group__435869 = new BitSet(new long[]{0x0080000000000000L,0x8400000000000008L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__5_in_rule__PhysicalNode__Group__435872 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__NameAssignment_4_in_rule__PhysicalNode__Group__4__Impl35899 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__5__Impl_in_rule__PhysicalNode__Group__535929 = new BitSet(new long[]{0x0080000000000000L,0x8400000000000008L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__6_in_rule__PhysicalNode__Group__535932 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_5__0_in_rule__PhysicalNode__Group__5__Impl35959 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__6__Impl_in_rule__PhysicalNode__Group__635990 = new BitSet(new long[]{0x0080000000000000L,0x8400000000000008L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__7_in_rule__PhysicalNode__Group__635993 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_6__0_in_rule__PhysicalNode__Group__6__Impl36020 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__7__Impl_in_rule__PhysicalNode__Group__736051 = new BitSet(new long[]{0x0080000000000000L,0x8400000000000008L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__8_in_rule__PhysicalNode__Group__736054 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_7__0_in_rule__PhysicalNode__Group__7__Impl36081 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__8__Impl_in_rule__PhysicalNode__Group__836112 = new BitSet(new long[]{0x0008066100000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__9_in_rule__PhysicalNode__Group__836115 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_122_in_rule__PhysicalNode__Group__8__Impl36143 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__9__Impl_in_rule__PhysicalNode__Group__936174 = new BitSet(new long[]{0x0000000020000000L,0x2000000000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__10_in_rule__PhysicalNode__Group__936177 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__PerformanceAssignment_9_in_rule__PhysicalNode__Group__9__Impl36204 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__10__Impl_in_rule__PhysicalNode__Group__1036234 = new BitSet(new long[]{0x0000000020000000L,0x2000000000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__11_in_rule__PhysicalNode__Group__1036237 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_10__0_in_rule__PhysicalNode__Group__10__Impl36264 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group__11__Impl_in_rule__PhysicalNode__Group__1136295 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__PhysicalNode__Group__11__Impl36323 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_5__0__Impl_in_rule__PhysicalNode__Group_5__036378 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_5__1_in_rule__PhysicalNode__Group_5__036381 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__PhysicalNode__Group_5__0__Impl36409 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_5__1__Impl_in_rule__PhysicalNode__Group_5__136440 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_5__2_in_rule__PhysicalNode__Group_5__136443 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__PhysicalNode__Group_5__1__Impl36471 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_5__2__Impl_in_rule__PhysicalNode__Group_5__236502 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_5__3_in_rule__PhysicalNode__Group_5__236505 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__AlternativeNamesAssignment_5_2_in_rule__PhysicalNode__Group_5__2__Impl36532 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_5__3__Impl_in_rule__PhysicalNode__Group_5__336562 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_5__4_in_rule__PhysicalNode__Group_5__336565 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_5_3__0_in_rule__PhysicalNode__Group_5__3__Impl36592 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_5__4__Impl_in_rule__PhysicalNode__Group_5__436623 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__PhysicalNode__Group_5__4__Impl36651 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_5_3__0__Impl_in_rule__PhysicalNode__Group_5_3__036692 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_5_3__1_in_rule__PhysicalNode__Group_5_3__036695 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__PhysicalNode__Group_5_3__0__Impl36723 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_5_3__1__Impl_in_rule__PhysicalNode__Group_5_3__136754 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__AlternativeNamesAssignment_5_3_1_in_rule__PhysicalNode__Group_5_3__1__Impl36781 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_6__0__Impl_in_rule__PhysicalNode__Group_6__036815 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_6__1_in_rule__PhysicalNode__Group_6__036818 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_55_in_rule__PhysicalNode__Group_6__0__Impl36846 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_6__1__Impl_in_rule__PhysicalNode__Group_6__136877 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_6__2_in_rule__PhysicalNode__Group_6__136880 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_123_in_rule__PhysicalNode__Group_6__1__Impl36908 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_6__2__Impl_in_rule__PhysicalNode__Group_6__236939 = new BitSet(new long[]{0x0000000080000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_6__3_in_rule__PhysicalNode__Group_6__236942 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__SoftwareAssignment_6_2_in_rule__PhysicalNode__Group_6__2__Impl36969 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_6__3__Impl_in_rule__PhysicalNode__Group_6__336999 = new BitSet(new long[]{0x0000000080000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_6__4_in_rule__PhysicalNode__Group_6__337002 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_6_3__0_in_rule__PhysicalNode__Group_6__3__Impl37029 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_6__4__Impl_in_rule__PhysicalNode__Group_6__437060 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_124_in_rule__PhysicalNode__Group_6__4__Impl37088 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_6_3__0__Impl_in_rule__PhysicalNode__Group_6_3__037129 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_6_3__1_in_rule__PhysicalNode__Group_6_3__037132 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__PhysicalNode__Group_6_3__0__Impl37160 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_6_3__1__Impl_in_rule__PhysicalNode__Group_6_3__137191 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__SoftwareAssignment_6_3_1_in_rule__PhysicalNode__Group_6_3__1__Impl37218 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_7__0__Impl_in_rule__PhysicalNode__Group_7__037252 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_7__1_in_rule__PhysicalNode__Group_7__037255 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_127_in_rule__PhysicalNode__Group_7__0__Impl37283 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_7__1__Impl_in_rule__PhysicalNode__Group_7__137314 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_7__2_in_rule__PhysicalNode__Group_7__137317 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_123_in_rule__PhysicalNode__Group_7__1__Impl37345 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_7__2__Impl_in_rule__PhysicalNode__Group_7__237376 = new BitSet(new long[]{0x0000000080000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_7__3_in_rule__PhysicalNode__Group_7__237379 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__HostsAssignment_7_2_in_rule__PhysicalNode__Group_7__2__Impl37406 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_7__3__Impl_in_rule__PhysicalNode__Group_7__337436 = new BitSet(new long[]{0x0000000080000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_7__4_in_rule__PhysicalNode__Group_7__337439 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_7_3__0_in_rule__PhysicalNode__Group_7__3__Impl37466 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_7__4__Impl_in_rule__PhysicalNode__Group_7__437497 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_124_in_rule__PhysicalNode__Group_7__4__Impl37525 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_7_3__0__Impl_in_rule__PhysicalNode__Group_7_3__037566 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_7_3__1_in_rule__PhysicalNode__Group_7_3__037569 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__PhysicalNode__Group_7_3__0__Impl37597 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_7_3__1__Impl_in_rule__PhysicalNode__Group_7_3__137628 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__HostsAssignment_7_3_1_in_rule__PhysicalNode__Group_7_3__1__Impl37655 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_10__0__Impl_in_rule__PhysicalNode__Group_10__037689 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_10__1_in_rule__PhysicalNode__Group_10__037692 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_125_in_rule__PhysicalNode__Group_10__0__Impl37720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_10__1__Impl_in_rule__PhysicalNode__Group_10__137751 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000050000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_10__2_in_rule__PhysicalNode__Group_10__137754 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__PhysicalNode__Group_10__1__Impl37782 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_10__2__Impl_in_rule__PhysicalNode__Group_10__237813 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_10__3_in_rule__PhysicalNode__Group_10__237816 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__InterfacesAssignment_10_2_in_rule__PhysicalNode__Group_10__2__Impl37843 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_10__3__Impl_in_rule__PhysicalNode__Group_10__337873 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_10__4_in_rule__PhysicalNode__Group_10__337876 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_10_3__0_in_rule__PhysicalNode__Group_10__3__Impl37903 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_10__4__Impl_in_rule__PhysicalNode__Group_10__437934 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__PhysicalNode__Group_10__4__Impl37962 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_10_3__0__Impl_in_rule__PhysicalNode__Group_10_3__038003 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000050000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_10_3__1_in_rule__PhysicalNode__Group_10_3__038006 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__PhysicalNode__Group_10_3__0__Impl38034 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__Group_10_3__1__Impl_in_rule__PhysicalNode__Group_10_3__138065 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNode__InterfacesAssignment_10_3_1_in_rule__PhysicalNode__Group_10_3__1__Impl38092 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__0__Impl_in_rule__PhysicalLink__Group__038126 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__1_in_rule__PhysicalLink__Group__038129 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_128_in_rule__PhysicalLink__Group__0__Impl38157 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__1__Impl_in_rule__PhysicalLink__Group__138188 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__2_in_rule__PhysicalLink__Group__138191 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__IdAssignment_1_in_rule__PhysicalLink__Group__1__Impl38218 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__2__Impl_in_rule__PhysicalLink__Group__238248 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__3_in_rule__PhysicalLink__Group__238251 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__PhysicalLink__Group__2__Impl38279 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__3__Impl_in_rule__PhysicalLink__Group__338310 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__4_in_rule__PhysicalLink__Group__338313 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_rule__PhysicalLink__Group__3__Impl38341 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__4__Impl_in_rule__PhysicalLink__Group__438372 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__5_in_rule__PhysicalLink__Group__438375 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__NameAssignment_4_in_rule__PhysicalLink__Group__4__Impl38402 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__5__Impl_in_rule__PhysicalLink__Group__538432 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__6_in_rule__PhysicalLink__Group__538435 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group_5__0_in_rule__PhysicalLink__Group__5__Impl38462 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__6__Impl_in_rule__PhysicalLink__Group__638493 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__7_in_rule__PhysicalLink__Group__638496 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_129_in_rule__PhysicalLink__Group__6__Impl38524 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__7__Impl_in_rule__PhysicalLink__Group__738555 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__8_in_rule__PhysicalLink__Group__738558 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_123_in_rule__PhysicalLink__Group__7__Impl38586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__8__Impl_in_rule__PhysicalLink__Group__838617 = new BitSet(new long[]{0x0000000080000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__9_in_rule__PhysicalLink__Group__838620 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__ConnectsAssignment_8_in_rule__PhysicalLink__Group__8__Impl38647 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__9__Impl_in_rule__PhysicalLink__Group__938677 = new BitSet(new long[]{0x0000000080000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__10_in_rule__PhysicalLink__Group__938680 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group_9__0_in_rule__PhysicalLink__Group__9__Impl38707 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__10__Impl_in_rule__PhysicalLink__Group__1038738 = new BitSet(new long[]{0x0000000000000000L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__11_in_rule__PhysicalLink__Group__1038741 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_124_in_rule__PhysicalLink__Group__10__Impl38769 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__11__Impl_in_rule__PhysicalLink__Group__1138800 = new BitSet(new long[]{0x0008066100000000L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__12_in_rule__PhysicalLink__Group__1138803 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_122_in_rule__PhysicalLink__Group__11__Impl38831 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__12__Impl_in_rule__PhysicalLink__Group__1238862 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__13_in_rule__PhysicalLink__Group__1238865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__PerformanceAssignment_12_in_rule__PhysicalLink__Group__12__Impl38892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group__13__Impl_in_rule__PhysicalLink__Group__1338922 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__PhysicalLink__Group__13__Impl38950 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group_5__0__Impl_in_rule__PhysicalLink__Group_5__039009 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group_5__1_in_rule__PhysicalLink__Group_5__039012 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__PhysicalLink__Group_5__0__Impl39040 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group_5__1__Impl_in_rule__PhysicalLink__Group_5__139071 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group_5__2_in_rule__PhysicalLink__Group_5__139074 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__PhysicalLink__Group_5__1__Impl39102 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group_5__2__Impl_in_rule__PhysicalLink__Group_5__239133 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group_5__3_in_rule__PhysicalLink__Group_5__239136 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__AlternativeNamesAssignment_5_2_in_rule__PhysicalLink__Group_5__2__Impl39163 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group_5__3__Impl_in_rule__PhysicalLink__Group_5__339193 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group_5__4_in_rule__PhysicalLink__Group_5__339196 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group_5_3__0_in_rule__PhysicalLink__Group_5__3__Impl39223 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group_5__4__Impl_in_rule__PhysicalLink__Group_5__439254 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__PhysicalLink__Group_5__4__Impl39282 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group_5_3__0__Impl_in_rule__PhysicalLink__Group_5_3__039323 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group_5_3__1_in_rule__PhysicalLink__Group_5_3__039326 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__PhysicalLink__Group_5_3__0__Impl39354 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group_5_3__1__Impl_in_rule__PhysicalLink__Group_5_3__139385 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__AlternativeNamesAssignment_5_3_1_in_rule__PhysicalLink__Group_5_3__1__Impl39412 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group_9__0__Impl_in_rule__PhysicalLink__Group_9__039446 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group_9__1_in_rule__PhysicalLink__Group_9__039449 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__PhysicalLink__Group_9__0__Impl39477 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__Group_9__1__Impl_in_rule__PhysicalLink__Group_9__139508 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalLink__ConnectsAssignment_9_1_in_rule__PhysicalLink__Group_9__1__Impl39535 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__0__Impl_in_rule__VirtualLink__Group__039569 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__1_in_rule__VirtualLink__Group__039572 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_130_in_rule__VirtualLink__Group__0__Impl39600 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__1__Impl_in_rule__VirtualLink__Group__139631 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__2_in_rule__VirtualLink__Group__139634 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__IdAssignment_1_in_rule__VirtualLink__Group__1__Impl39661 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__2__Impl_in_rule__VirtualLink__Group__239691 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__3_in_rule__VirtualLink__Group__239694 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__VirtualLink__Group__2__Impl39722 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__3__Impl_in_rule__VirtualLink__Group__339753 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__4_in_rule__VirtualLink__Group__339756 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_rule__VirtualLink__Group__3__Impl39784 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__4__Impl_in_rule__VirtualLink__Group__439815 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__5_in_rule__VirtualLink__Group__439818 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__NameAssignment_4_in_rule__VirtualLink__Group__4__Impl39845 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__5__Impl_in_rule__VirtualLink__Group__539875 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__6_in_rule__VirtualLink__Group__539878 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group_5__0_in_rule__VirtualLink__Group__5__Impl39905 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__6__Impl_in_rule__VirtualLink__Group__639936 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__7_in_rule__VirtualLink__Group__639939 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_129_in_rule__VirtualLink__Group__6__Impl39967 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__7__Impl_in_rule__VirtualLink__Group__739998 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__8_in_rule__VirtualLink__Group__740001 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_123_in_rule__VirtualLink__Group__7__Impl40029 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__8__Impl_in_rule__VirtualLink__Group__840060 = new BitSet(new long[]{0x0000000080000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__9_in_rule__VirtualLink__Group__840063 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__ConnectsAssignment_8_in_rule__VirtualLink__Group__8__Impl40090 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__9__Impl_in_rule__VirtualLink__Group__940120 = new BitSet(new long[]{0x0000000080000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__10_in_rule__VirtualLink__Group__940123 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group_9__0_in_rule__VirtualLink__Group__9__Impl40150 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__10__Impl_in_rule__VirtualLink__Group__1040181 = new BitSet(new long[]{0x0000000000000000L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__11_in_rule__VirtualLink__Group__1040184 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_124_in_rule__VirtualLink__Group__10__Impl40212 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__11__Impl_in_rule__VirtualLink__Group__1140243 = new BitSet(new long[]{0x0008066100000000L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__12_in_rule__VirtualLink__Group__1140246 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_122_in_rule__VirtualLink__Group__11__Impl40274 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__12__Impl_in_rule__VirtualLink__Group__1240305 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__13_in_rule__VirtualLink__Group__1240308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__PerformanceAssignment_12_in_rule__VirtualLink__Group__12__Impl40335 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group__13__Impl_in_rule__VirtualLink__Group__1340365 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__VirtualLink__Group__13__Impl40393 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group_5__0__Impl_in_rule__VirtualLink__Group_5__040452 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group_5__1_in_rule__VirtualLink__Group_5__040455 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__VirtualLink__Group_5__0__Impl40483 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group_5__1__Impl_in_rule__VirtualLink__Group_5__140514 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group_5__2_in_rule__VirtualLink__Group_5__140517 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__VirtualLink__Group_5__1__Impl40545 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group_5__2__Impl_in_rule__VirtualLink__Group_5__240576 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group_5__3_in_rule__VirtualLink__Group_5__240579 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__AlternativeNamesAssignment_5_2_in_rule__VirtualLink__Group_5__2__Impl40606 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group_5__3__Impl_in_rule__VirtualLink__Group_5__340636 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group_5__4_in_rule__VirtualLink__Group_5__340639 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group_5_3__0_in_rule__VirtualLink__Group_5__3__Impl40666 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group_5__4__Impl_in_rule__VirtualLink__Group_5__440697 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__VirtualLink__Group_5__4__Impl40725 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group_5_3__0__Impl_in_rule__VirtualLink__Group_5_3__040766 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group_5_3__1_in_rule__VirtualLink__Group_5_3__040769 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__VirtualLink__Group_5_3__0__Impl40797 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group_5_3__1__Impl_in_rule__VirtualLink__Group_5_3__140828 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__AlternativeNamesAssignment_5_3_1_in_rule__VirtualLink__Group_5_3__1__Impl40855 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group_9__0__Impl_in_rule__VirtualLink__Group_9__040889 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group_9__1_in_rule__VirtualLink__Group_9__040892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__VirtualLink__Group_9__0__Impl40920 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__Group_9__1__Impl_in_rule__VirtualLink__Group_9__140951 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualLink__ConnectsAssignment_9_1_in_rule__VirtualLink__Group_9__1__Impl40978 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group__0__Impl_in_rule__ProtocolsRepository__Group__041012 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group__1_in_rule__ProtocolsRepository__Group__041015 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_131_in_rule__ProtocolsRepository__Group__0__Impl41043 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group__1__Impl_in_rule__ProtocolsRepository__Group__141074 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group__2_in_rule__ProtocolsRepository__Group__141077 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__ProtocolsRepository__Group__1__Impl41105 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group__2__Impl_in_rule__ProtocolsRepository__Group__241136 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group__3_in_rule__ProtocolsRepository__Group__241139 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group_2__0_in_rule__ProtocolsRepository__Group__2__Impl41166 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group__3__Impl_in_rule__ProtocolsRepository__Group__341197 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group__4_in_rule__ProtocolsRepository__Group__341200 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_132_in_rule__ProtocolsRepository__Group__3__Impl41228 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group__4__Impl_in_rule__ProtocolsRepository__Group__441259 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L,0x0000000100000000L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group__5_in_rule__ProtocolsRepository__Group__441262 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__ProtocolsRepository__Group__4__Impl41290 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group__5__Impl_in_rule__ProtocolsRepository__Group__541321 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group__6_in_rule__ProtocolsRepository__Group__541324 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__ProtocolsAssignment_5_in_rule__ProtocolsRepository__Group__5__Impl41351 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group__6__Impl_in_rule__ProtocolsRepository__Group__641381 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group__7_in_rule__ProtocolsRepository__Group__641384 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group_6__0_in_rule__ProtocolsRepository__Group__6__Impl41411 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group__7__Impl_in_rule__ProtocolsRepository__Group__741442 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group__8_in_rule__ProtocolsRepository__Group__741445 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__ProtocolsRepository__Group__7__Impl41473 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group__8__Impl_in_rule__ProtocolsRepository__Group__841504 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__ProtocolsRepository__Group__8__Impl41532 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group_2__0__Impl_in_rule__ProtocolsRepository__Group_2__041581 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group_2__1_in_rule__ProtocolsRepository__Group_2__041584 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_133_in_rule__ProtocolsRepository__Group_2__0__Impl41612 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group_2__1__Impl_in_rule__ProtocolsRepository__Group_2__141643 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group_2__2_in_rule__ProtocolsRepository__Group_2__141646 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__ProtocolsRepository__Group_2__1__Impl41674 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group_2__2__Impl_in_rule__ProtocolsRepository__Group_2__241705 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group_2__3_in_rule__ProtocolsRepository__Group_2__241708 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__StacksAssignment_2_2_in_rule__ProtocolsRepository__Group_2__2__Impl41735 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group_2__3__Impl_in_rule__ProtocolsRepository__Group_2__341765 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group_2__4_in_rule__ProtocolsRepository__Group_2__341768 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group_2_3__0_in_rule__ProtocolsRepository__Group_2__3__Impl41795 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group_2__4__Impl_in_rule__ProtocolsRepository__Group_2__441826 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__ProtocolsRepository__Group_2__4__Impl41854 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group_2_3__0__Impl_in_rule__ProtocolsRepository__Group_2_3__041895 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000200L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group_2_3__1_in_rule__ProtocolsRepository__Group_2_3__041898 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__ProtocolsRepository__Group_2_3__0__Impl41926 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group_2_3__1__Impl_in_rule__ProtocolsRepository__Group_2_3__141957 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__StacksAssignment_2_3_1_in_rule__ProtocolsRepository__Group_2_3__1__Impl41984 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group_6__0__Impl_in_rule__ProtocolsRepository__Group_6__042018 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L,0x0000000100000000L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group_6__1_in_rule__ProtocolsRepository__Group_6__042021 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__ProtocolsRepository__Group_6__0__Impl42049 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__Group_6__1__Impl_in_rule__ProtocolsRepository__Group_6__142080 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolsRepository__ProtocolsAssignment_6_1_in_rule__ProtocolsRepository__Group_6__1__Impl42107 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group__0__Impl_in_rule__RoutesRepository__Group__042141 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group__1_in_rule__RoutesRepository__Group__042144 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group__1__Impl_in_rule__RoutesRepository__Group__142202 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group__2_in_rule__RoutesRepository__Group__142205 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_134_in_rule__RoutesRepository__Group__1__Impl42233 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group__2__Impl_in_rule__RoutesRepository__Group__242264 = new BitSet(new long[]{0x2000000020000000L,0x0000000000000000L,0x0000000000000180L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group__3_in_rule__RoutesRepository__Group__242267 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__RoutesRepository__Group__2__Impl42295 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group__3__Impl_in_rule__RoutesRepository__Group__342326 = new BitSet(new long[]{0x2000000020000000L,0x0000000000000000L,0x0000000000000180L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group__4_in_rule__RoutesRepository__Group__342329 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_3__0_in_rule__RoutesRepository__Group__3__Impl42356 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group__4__Impl_in_rule__RoutesRepository__Group__442387 = new BitSet(new long[]{0x2000000020000000L,0x0000000000000000L,0x0000000000000180L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group__5_in_rule__RoutesRepository__Group__442390 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_4__0_in_rule__RoutesRepository__Group__4__Impl42417 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group__5__Impl_in_rule__RoutesRepository__Group__542448 = new BitSet(new long[]{0x2000000020000000L,0x0000000000000000L,0x0000000000000180L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group__6_in_rule__RoutesRepository__Group__542451 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_5__0_in_rule__RoutesRepository__Group__5__Impl42478 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group__6__Impl_in_rule__RoutesRepository__Group__642509 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__RoutesRepository__Group__6__Impl42537 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_3__0__Impl_in_rule__RoutesRepository__Group_3__042582 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_3__1_in_rule__RoutesRepository__Group_3__042585 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_61_in_rule__RoutesRepository__Group_3__0__Impl42613 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_3__1__Impl_in_rule__RoutesRepository__Group_3__142644 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_3__2_in_rule__RoutesRepository__Group_3__142647 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__RoutesRepository__Group_3__1__Impl42675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_3__2__Impl_in_rule__RoutesRepository__Group_3__242706 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_3__3_in_rule__RoutesRepository__Group_3__242709 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__RoutesAssignment_3_2_in_rule__RoutesRepository__Group_3__2__Impl42736 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_3__3__Impl_in_rule__RoutesRepository__Group_3__342766 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_3__4_in_rule__RoutesRepository__Group_3__342769 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_3_3__0_in_rule__RoutesRepository__Group_3__3__Impl42796 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_3__4__Impl_in_rule__RoutesRepository__Group_3__442827 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__RoutesRepository__Group_3__4__Impl42855 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_3_3__0__Impl_in_rule__RoutesRepository__Group_3_3__042896 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_3_3__1_in_rule__RoutesRepository__Group_3_3__042899 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__RoutesRepository__Group_3_3__0__Impl42927 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_3_3__1__Impl_in_rule__RoutesRepository__Group_3_3__142958 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__RoutesAssignment_3_3_1_in_rule__RoutesRepository__Group_3_3__1__Impl42985 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_4__0__Impl_in_rule__RoutesRepository__Group_4__043019 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_4__1_in_rule__RoutesRepository__Group_4__043022 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_rule__RoutesRepository__Group_4__0__Impl43050 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_4__1__Impl_in_rule__RoutesRepository__Group_4__143081 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_4__2_in_rule__RoutesRepository__Group_4__143084 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__RoutesRepository__Group_4__1__Impl43112 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_4__2__Impl_in_rule__RoutesRepository__Group_4__243143 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_4__3_in_rule__RoutesRepository__Group_4__243146 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__FlowRoutesAssignment_4_2_in_rule__RoutesRepository__Group_4__2__Impl43173 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_4__3__Impl_in_rule__RoutesRepository__Group_4__343203 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_4__4_in_rule__RoutesRepository__Group_4__343206 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_4_3__0_in_rule__RoutesRepository__Group_4__3__Impl43233 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_4__4__Impl_in_rule__RoutesRepository__Group_4__443264 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__RoutesRepository__Group_4__4__Impl43292 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_4_3__0__Impl_in_rule__RoutesRepository__Group_4_3__043333 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_4_3__1_in_rule__RoutesRepository__Group_4_3__043336 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__RoutesRepository__Group_4_3__0__Impl43364 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_4_3__1__Impl_in_rule__RoutesRepository__Group_4_3__143395 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__FlowRoutesAssignment_4_3_1_in_rule__RoutesRepository__Group_4_3__1__Impl43422 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_5__0__Impl_in_rule__RoutesRepository__Group_5__043456 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_5__1_in_rule__RoutesRepository__Group_5__043459 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_136_in_rule__RoutesRepository__Group_5__0__Impl43487 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_5__1__Impl_in_rule__RoutesRepository__Group_5__143518 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000200200000L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_5__2_in_rule__RoutesRepository__Group_5__143521 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__RoutesRepository__Group_5__1__Impl43549 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_5__2__Impl_in_rule__RoutesRepository__Group_5__243580 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_5__3_in_rule__RoutesRepository__Group_5__243583 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__DirectionsAssignment_5_2_in_rule__RoutesRepository__Group_5__2__Impl43610 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_5__3__Impl_in_rule__RoutesRepository__Group_5__343640 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_5__4_in_rule__RoutesRepository__Group_5__343643 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_5_3__0_in_rule__RoutesRepository__Group_5__3__Impl43670 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_5__4__Impl_in_rule__RoutesRepository__Group_5__443701 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__RoutesRepository__Group_5__4__Impl43729 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_5_3__0__Impl_in_rule__RoutesRepository__Group_5_3__043770 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000200200000L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_5_3__1_in_rule__RoutesRepository__Group_5_3__043773 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__RoutesRepository__Group_5_3__0__Impl43801 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__Group_5_3__1__Impl_in_rule__RoutesRepository__Group_5_3__143832 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__RoutesRepository__DirectionsAssignment_5_3_1_in_rule__RoutesRepository__Group_5_3__1__Impl43859 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__0__Impl_in_rule__ProtocolStack__Group__043893 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__1_in_rule__ProtocolStack__Group__043896 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_137_in_rule__ProtocolStack__Group__0__Impl43924 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__1__Impl_in_rule__ProtocolStack__Group__143955 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__2_in_rule__ProtocolStack__Group__143958 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__NameAssignment_1_in_rule__ProtocolStack__Group__1__Impl43985 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__2__Impl_in_rule__ProtocolStack__Group__244015 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L,0x0000000000000400L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__3_in_rule__ProtocolStack__Group__244018 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__ProtocolStack__Group__2__Impl44046 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__3__Impl_in_rule__ProtocolStack__Group__344077 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L,0x0000000000000400L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__4_in_rule__ProtocolStack__Group__344080 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group_3__0_in_rule__ProtocolStack__Group__3__Impl44107 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__4__Impl_in_rule__ProtocolStack__Group__444138 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__5_in_rule__ProtocolStack__Group__444141 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_138_in_rule__ProtocolStack__Group__4__Impl44169 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__5__Impl_in_rule__ProtocolStack__Group__544200 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__6_in_rule__ProtocolStack__Group__544203 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__ProtocolStack__Group__5__Impl44231 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__6__Impl_in_rule__ProtocolStack__Group__644262 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__7_in_rule__ProtocolStack__Group__644265 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__LayersAssignment_6_in_rule__ProtocolStack__Group__6__Impl44292 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__7__Impl_in_rule__ProtocolStack__Group__744322 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__8_in_rule__ProtocolStack__Group__744325 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group_7__0_in_rule__ProtocolStack__Group__7__Impl44352 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__8__Impl_in_rule__ProtocolStack__Group__844383 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__9_in_rule__ProtocolStack__Group__844386 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__ProtocolStack__Group__8__Impl44414 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group__9__Impl_in_rule__ProtocolStack__Group__944445 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__ProtocolStack__Group__9__Impl44473 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group_3__0__Impl_in_rule__ProtocolStack__Group_3__044524 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group_3__1_in_rule__ProtocolStack__Group_3__044527 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__ProtocolStack__Group_3__0__Impl44555 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group_3__1__Impl_in_rule__ProtocolStack__Group_3__144586 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group_3__2_in_rule__ProtocolStack__Group_3__144589 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__ProtocolStack__Group_3__1__Impl44617 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group_3__2__Impl_in_rule__ProtocolStack__Group_3__244648 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group_3__3_in_rule__ProtocolStack__Group_3__244651 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__AlternativeNamesAssignment_3_2_in_rule__ProtocolStack__Group_3__2__Impl44678 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group_3__3__Impl_in_rule__ProtocolStack__Group_3__344708 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group_3__4_in_rule__ProtocolStack__Group_3__344711 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    private static class FollowSets002 {
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group_3_3__0_in_rule__ProtocolStack__Group_3__3__Impl44738 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group_3__4__Impl_in_rule__ProtocolStack__Group_3__444769 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__ProtocolStack__Group_3__4__Impl44797 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group_3_3__0__Impl_in_rule__ProtocolStack__Group_3_3__044838 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group_3_3__1_in_rule__ProtocolStack__Group_3_3__044841 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__ProtocolStack__Group_3_3__0__Impl44869 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group_3_3__1__Impl_in_rule__ProtocolStack__Group_3_3__144900 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__AlternativeNamesAssignment_3_3_1_in_rule__ProtocolStack__Group_3_3__1__Impl44927 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group_7__0__Impl_in_rule__ProtocolStack__Group_7__044961 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group_7__1_in_rule__ProtocolStack__Group_7__044964 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__ProtocolStack__Group_7__0__Impl44992 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__Group_7__1__Impl_in_rule__ProtocolStack__Group_7__145023 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolStack__LayersAssignment_7_1_in_rule__ProtocolStack__Group_7__1__Impl45050 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group__0__Impl_in_rule__ProtocolLayer__Group__045084 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group__1_in_rule__ProtocolLayer__Group__045087 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_rule__ProtocolLayer__Group__0__Impl45115 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group__1__Impl_in_rule__ProtocolLayer__Group__145146 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group__2_in_rule__ProtocolLayer__Group__145149 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__NameAssignment_1_in_rule__ProtocolLayer__Group__1__Impl45176 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group__2__Impl_in_rule__ProtocolLayer__Group__245206 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group__3_in_rule__ProtocolLayer__Group__245209 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__ProtocolLayer__Group__2__Impl45237 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group__3__Impl_in_rule__ProtocolLayer__Group__345268 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group__4_in_rule__ProtocolLayer__Group__345271 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_3__0_in_rule__ProtocolLayer__Group__3__Impl45298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group__4__Impl_in_rule__ProtocolLayer__Group__445329 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group__5_in_rule__ProtocolLayer__Group__445332 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_rule__ProtocolLayer__Group__4__Impl45360 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group__5__Impl_in_rule__ProtocolLayer__Group__545391 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000000L,0x0000000000006000L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group__6_in_rule__ProtocolLayer__Group__545394 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__ProtocolAssignment_5_in_rule__ProtocolLayer__Group__5__Impl45421 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group__6__Impl_in_rule__ProtocolLayer__Group__645451 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000000L,0x0000000000006000L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group__7_in_rule__ProtocolLayer__Group__645454 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_6__0_in_rule__ProtocolLayer__Group__6__Impl45481 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group__7__Impl_in_rule__ProtocolLayer__Group__745512 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000000L,0x0000000000006000L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group__8_in_rule__ProtocolLayer__Group__745515 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_7__0_in_rule__ProtocolLayer__Group__7__Impl45542 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group__8__Impl_in_rule__ProtocolLayer__Group__845573 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__ProtocolLayer__Group__8__Impl45601 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_3__0__Impl_in_rule__ProtocolLayer__Group_3__045650 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_3__1_in_rule__ProtocolLayer__Group_3__045653 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__ProtocolLayer__Group_3__0__Impl45681 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_3__1__Impl_in_rule__ProtocolLayer__Group_3__145712 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_3__2_in_rule__ProtocolLayer__Group_3__145715 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__ProtocolLayer__Group_3__1__Impl45743 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_3__2__Impl_in_rule__ProtocolLayer__Group_3__245774 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_3__3_in_rule__ProtocolLayer__Group_3__245777 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__AlternativeNamesAssignment_3_2_in_rule__ProtocolLayer__Group_3__2__Impl45804 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_3__3__Impl_in_rule__ProtocolLayer__Group_3__345834 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_3__4_in_rule__ProtocolLayer__Group_3__345837 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_3_3__0_in_rule__ProtocolLayer__Group_3__3__Impl45864 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_3__4__Impl_in_rule__ProtocolLayer__Group_3__445895 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__ProtocolLayer__Group_3__4__Impl45923 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_3_3__0__Impl_in_rule__ProtocolLayer__Group_3_3__045964 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_3_3__1_in_rule__ProtocolLayer__Group_3_3__045967 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__ProtocolLayer__Group_3_3__0__Impl45995 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_3_3__1__Impl_in_rule__ProtocolLayer__Group_3_3__146026 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__AlternativeNamesAssignment_3_3_1_in_rule__ProtocolLayer__Group_3_3__1__Impl46053 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_6__0__Impl_in_rule__ProtocolLayer__Group_6__046087 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_6__1_in_rule__ProtocolLayer__Group_6__046090 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_141_in_rule__ProtocolLayer__Group_6__0__Impl46118 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_6__1__Impl_in_rule__ProtocolLayer__Group_6__146149 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__IsCarriedByAssignment_6_1_in_rule__ProtocolLayer__Group_6__1__Impl46176 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_7__0__Impl_in_rule__ProtocolLayer__Group_7__046210 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_7__1_in_rule__ProtocolLayer__Group_7__046213 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_142_in_rule__ProtocolLayer__Group_7__0__Impl46241 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__Group_7__1__Impl_in_rule__ProtocolLayer__Group_7__146272 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ProtocolLayer__CarriesAssignment_7_1_in_rule__ProtocolLayer__Group_7__1__Impl46299 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group__0__Impl_in_rule__Route__Group__046333 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__Route__Group__1_in_rule__Route__Group__046336 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_143_in_rule__Route__Group__0__Impl46364 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group__1__Impl_in_rule__Route__Group__146395 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__Route__Group__2_in_rule__Route__Group__146398 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__IdAssignment_1_in_rule__Route__Group__1__Impl46425 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group__2__Impl_in_rule__Route__Group__246455 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group__3_in_rule__Route__Group__246458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__Route__Group__2__Impl46486 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group__3__Impl_in_rule__Route__Group__346517 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__Route__Group__4_in_rule__Route__Group__346520 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_rule__Route__Group__3__Impl46548 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group__4__Impl_in_rule__Route__Group__446579 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L,0x0000000000050000L});
+        public static final BitSet FOLLOW_rule__Route__Group__5_in_rule__Route__Group__446582 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__NameAssignment_4_in_rule__Route__Group__4__Impl46609 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group__5__Impl_in_rule__Route__Group__546639 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L,0x0000000000050000L});
+        public static final BitSet FOLLOW_rule__Route__Group__6_in_rule__Route__Group__546642 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group_5__0_in_rule__Route__Group__5__Impl46669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group__6__Impl_in_rule__Route__Group__646700 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L,0x0000000000050000L});
+        public static final BitSet FOLLOW_rule__Route__Group__7_in_rule__Route__Group__646703 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group_6__0_in_rule__Route__Group__6__Impl46730 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group__7__Impl_in_rule__Route__Group__746761 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__Route__Group__8_in_rule__Route__Group__746764 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_144_in_rule__Route__Group__7__Impl46792 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group__8__Impl_in_rule__Route__Group__846823 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__Route__Group__9_in_rule__Route__Group__846826 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__StartAssignment_8_in_rule__Route__Group__8__Impl46853 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group__9__Impl_in_rule__Route__Group__946883 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__Route__Group__10_in_rule__Route__Group__946886 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_145_in_rule__Route__Group__9__Impl46914 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group__10__Impl_in_rule__Route__Group__1046945 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__Route__Group__11_in_rule__Route__Group__1046948 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__EndAssignment_10_in_rule__Route__Group__10__Impl46975 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group__11__Impl_in_rule__Route__Group__1147005 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__Route__Group__12_in_rule__Route__Group__1147008 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group_11__0_in_rule__Route__Group__11__Impl47035 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group__12__Impl_in_rule__Route__Group__1247066 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__Route__Group__12__Impl47094 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group_5__0__Impl_in_rule__Route__Group_5__047151 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__Route__Group_5__1_in_rule__Route__Group_5__047154 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__Route__Group_5__0__Impl47182 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group_5__1__Impl_in_rule__Route__Group_5__147213 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__Route__Group_5__2_in_rule__Route__Group_5__147216 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__Route__Group_5__1__Impl47244 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group_5__2__Impl_in_rule__Route__Group_5__247275 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__Route__Group_5__3_in_rule__Route__Group_5__247278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__AlternativeNamesAssignment_5_2_in_rule__Route__Group_5__2__Impl47305 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group_5__3__Impl_in_rule__Route__Group_5__347335 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__Route__Group_5__4_in_rule__Route__Group_5__347338 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group_5_3__0_in_rule__Route__Group_5__3__Impl47365 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__Route__Group_5__4__Impl_in_rule__Route__Group_5__447396 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__Route__Group_5__4__Impl47424 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group_5_3__0__Impl_in_rule__Route__Group_5_3__047465 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__Route__Group_5_3__1_in_rule__Route__Group_5_3__047468 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__Route__Group_5_3__0__Impl47496 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group_5_3__1__Impl_in_rule__Route__Group_5_3__147527 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__AlternativeNamesAssignment_5_3_1_in_rule__Route__Group_5_3__1__Impl47554 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group_6__0__Impl_in_rule__Route__Group_6__047588 = new BitSet(new long[]{0x0000000000000040L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__Route__Group_6__1_in_rule__Route__Group_6__047591 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_146_in_rule__Route__Group_6__0__Impl47619 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group_6__1__Impl_in_rule__Route__Group_6__147650 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__NumHopsAssignment_6_1_in_rule__Route__Group_6__1__Impl47677 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group_11__0__Impl_in_rule__Route__Group_11__047711 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_rule__Route__Group_11__1_in_rule__Route__Group_11__047714 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__Route__Group_11__0__Impl47742 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__Group_11__1__Impl_in_rule__Route__Group_11__147773 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Route__HopsAssignment_11_1_in_rule__Route__Group_11__1__Impl47800 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__0__Impl_in_rule__FlowRoute__Group__047834 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__1_in_rule__FlowRoute__Group__047837 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_148_in_rule__FlowRoute__Group__0__Impl47865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__1__Impl_in_rule__FlowRoute__Group__147896 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__2_in_rule__FlowRoute__Group__147899 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__IdAssignment_1_in_rule__FlowRoute__Group__1__Impl47926 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__2__Impl_in_rule__FlowRoute__Group__247956 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__3_in_rule__FlowRoute__Group__247959 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__FlowRoute__Group__2__Impl47987 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__3__Impl_in_rule__FlowRoute__Group__348018 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__4_in_rule__FlowRoute__Group__348021 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_rule__FlowRoute__Group__3__Impl48049 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__4__Impl_in_rule__FlowRoute__Group__448080 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000008L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__5_in_rule__FlowRoute__Group__448083 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__NameAssignment_4_in_rule__FlowRoute__Group__4__Impl48110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__5__Impl_in_rule__FlowRoute__Group__548140 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000008L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__6_in_rule__FlowRoute__Group__548143 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_5__0_in_rule__FlowRoute__Group__5__Impl48170 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__6__Impl_in_rule__FlowRoute__Group__648201 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000008L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__7_in_rule__FlowRoute__Group__648204 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_6__0_in_rule__FlowRoute__Group__6__Impl48231 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__7__Impl_in_rule__FlowRoute__Group__748262 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__8_in_rule__FlowRoute__Group__748265 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_117_in_rule__FlowRoute__Group__7__Impl48293 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__8__Impl_in_rule__FlowRoute__Group__848324 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__9_in_rule__FlowRoute__Group__848327 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__FlowAssignment_8_in_rule__FlowRoute__Group__8__Impl48354 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__9__Impl_in_rule__FlowRoute__Group__948384 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__10_in_rule__FlowRoute__Group__948387 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_144_in_rule__FlowRoute__Group__9__Impl48415 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__10__Impl_in_rule__FlowRoute__Group__1048446 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__11_in_rule__FlowRoute__Group__1048449 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__StartAssignment_10_in_rule__FlowRoute__Group__10__Impl48476 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__11__Impl_in_rule__FlowRoute__Group__1148506 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__12_in_rule__FlowRoute__Group__1148509 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_145_in_rule__FlowRoute__Group__11__Impl48537 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__12__Impl_in_rule__FlowRoute__Group__1248568 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__13_in_rule__FlowRoute__Group__1248571 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__EndAssignment_12_in_rule__FlowRoute__Group__12__Impl48598 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__13__Impl_in_rule__FlowRoute__Group__1348628 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__14_in_rule__FlowRoute__Group__1348631 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_13__0_in_rule__FlowRoute__Group__13__Impl48658 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group__14__Impl_in_rule__FlowRoute__Group__1448689 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__FlowRoute__Group__14__Impl48717 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_5__0__Impl_in_rule__FlowRoute__Group_5__048778 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_5__1_in_rule__FlowRoute__Group_5__048781 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__FlowRoute__Group_5__0__Impl48809 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_5__1__Impl_in_rule__FlowRoute__Group_5__148840 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_5__2_in_rule__FlowRoute__Group_5__148843 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__FlowRoute__Group_5__1__Impl48871 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_5__2__Impl_in_rule__FlowRoute__Group_5__248902 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_5__3_in_rule__FlowRoute__Group_5__248905 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__AlternativeNamesAssignment_5_2_in_rule__FlowRoute__Group_5__2__Impl48932 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_5__3__Impl_in_rule__FlowRoute__Group_5__348962 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_5__4_in_rule__FlowRoute__Group_5__348965 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_5_3__0_in_rule__FlowRoute__Group_5__3__Impl48992 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_5__4__Impl_in_rule__FlowRoute__Group_5__449023 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__FlowRoute__Group_5__4__Impl49051 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_5_3__0__Impl_in_rule__FlowRoute__Group_5_3__049092 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_5_3__1_in_rule__FlowRoute__Group_5_3__049095 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__FlowRoute__Group_5_3__0__Impl49123 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_5_3__1__Impl_in_rule__FlowRoute__Group_5_3__149154 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__AlternativeNamesAssignment_5_3_1_in_rule__FlowRoute__Group_5_3__1__Impl49181 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_6__0__Impl_in_rule__FlowRoute__Group_6__049215 = new BitSet(new long[]{0x0000000000000040L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_6__1_in_rule__FlowRoute__Group_6__049218 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_146_in_rule__FlowRoute__Group_6__0__Impl49246 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_6__1__Impl_in_rule__FlowRoute__Group_6__149277 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__NumHopsAssignment_6_1_in_rule__FlowRoute__Group_6__1__Impl49304 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_13__0__Impl_in_rule__FlowRoute__Group_13__049338 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_13__1_in_rule__FlowRoute__Group_13__049341 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_rule__FlowRoute__Group_13__0__Impl49369 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__Group_13__1__Impl_in_rule__FlowRoute__Group_13__149400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FlowRoute__HopsAssignment_13_1_in_rule__FlowRoute__Group_13__1__Impl49427 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group__0__Impl_in_rule__Direction__Group__049461 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000200200000L});
+        public static final BitSet FOLLOW_rule__Direction__Group__1_in_rule__Direction__Group__049464 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__IsDefaultAssignment_0_in_rule__Direction__Group__0__Impl49491 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group__1__Impl_in_rule__Direction__Group__149522 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__Direction__Group__2_in_rule__Direction__Group__149525 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_149_in_rule__Direction__Group__1__Impl49553 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group__2__Impl_in_rule__Direction__Group__249584 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__Direction__Group__3_in_rule__Direction__Group__249587 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__IdAssignment_2_in_rule__Direction__Group__2__Impl49614 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group__3__Impl_in_rule__Direction__Group__349644 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group__4_in_rule__Direction__Group__349647 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__Direction__Group__3__Impl49675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group__4__Impl_in_rule__Direction__Group__449706 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__Direction__Group__5_in_rule__Direction__Group__449709 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_rule__Direction__Group__4__Impl49737 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group__5__Impl_in_rule__Direction__Group__549768 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L,0x0000000001400000L});
+        public static final BitSet FOLLOW_rule__Direction__Group__6_in_rule__Direction__Group__549771 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__NameAssignment_5_in_rule__Direction__Group__5__Impl49798 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group__6__Impl_in_rule__Direction__Group__649828 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L,0x0000000001400000L});
+        public static final BitSet FOLLOW_rule__Direction__Group__7_in_rule__Direction__Group__649831 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group_6__0_in_rule__Direction__Group__6__Impl49858 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group__7__Impl_in_rule__Direction__Group__749889 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L,0x0000000001400000L});
+        public static final BitSet FOLLOW_rule__Direction__Group__8_in_rule__Direction__Group__749892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group_7__0_in_rule__Direction__Group__7__Impl49919 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group__8__Impl_in_rule__Direction__Group__849950 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__Direction__Group__9_in_rule__Direction__Group__849953 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_150_in_rule__Direction__Group__8__Impl49981 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group__9__Impl_in_rule__Direction__Group__950012 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__Direction__Group__10_in_rule__Direction__Group__950015 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__OnNodeAssignment_9_in_rule__Direction__Group__9__Impl50042 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group__10__Impl_in_rule__Direction__Group__1050072 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__Direction__Group__11_in_rule__Direction__Group__1050075 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group_10__0_in_rule__Direction__Group__10__Impl50102 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group__11__Impl_in_rule__Direction__Group__1150133 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__Direction__Group__12_in_rule__Direction__Group__1150136 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_151_in_rule__Direction__Group__11__Impl50164 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group__12__Impl_in_rule__Direction__Group__1250195 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__Direction__Group__13_in_rule__Direction__Group__1250198 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__ViaAssignment_12_in_rule__Direction__Group__12__Impl50225 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group__13__Impl_in_rule__Direction__Group__1350255 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__Direction__Group__13__Impl50283 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group_6__0__Impl_in_rule__Direction__Group_6__050342 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__Direction__Group_6__1_in_rule__Direction__Group_6__050345 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__Direction__Group_6__0__Impl50373 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group_6__1__Impl_in_rule__Direction__Group_6__150404 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__Direction__Group_6__2_in_rule__Direction__Group_6__150407 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__Direction__Group_6__1__Impl50435 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group_6__2__Impl_in_rule__Direction__Group_6__250466 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__Direction__Group_6__3_in_rule__Direction__Group_6__250469 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__AlternativeNamesAssignment_6_2_in_rule__Direction__Group_6__2__Impl50496 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group_6__3__Impl_in_rule__Direction__Group_6__350526 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__Direction__Group_6__4_in_rule__Direction__Group_6__350529 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group_6_3__0_in_rule__Direction__Group_6__3__Impl50556 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group_6__4__Impl_in_rule__Direction__Group_6__450587 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__Direction__Group_6__4__Impl50615 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group_6_3__0__Impl_in_rule__Direction__Group_6_3__050656 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__Direction__Group_6_3__1_in_rule__Direction__Group_6_3__050659 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__Direction__Group_6_3__0__Impl50687 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group_6_3__1__Impl_in_rule__Direction__Group_6_3__150718 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__AlternativeNamesAssignment_6_3_1_in_rule__Direction__Group_6_3__1__Impl50745 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group_7__0__Impl_in_rule__Direction__Group_7__050779 = new BitSet(new long[]{0x0000000000000040L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__Direction__Group_7__1_in_rule__Direction__Group_7__050782 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_152_in_rule__Direction__Group_7__0__Impl50810 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group_7__1__Impl_in_rule__Direction__Group_7__150841 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__DistanceAssignment_7_1_in_rule__Direction__Group_7__1__Impl50868 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group_10__0__Impl_in_rule__Direction__Group_10__050902 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__Direction__Group_10__1_in_rule__Direction__Group_10__050905 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_117_in_rule__Direction__Group_10__0__Impl50933 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__Group_10__1__Impl_in_rule__Direction__Group_10__150964 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Direction__FlowAssignment_10_1_in_rule__Direction__Group_10__1__Impl50991 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Hop__Group__0__Impl_in_rule__Hop__Group__051025 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__Hop__Group__1_in_rule__Hop__Group__051028 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_153_in_rule__Hop__Group__0__Impl51056 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Hop__Group__1__Impl_in_rule__Hop__Group__151087 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__Hop__Group__2_in_rule__Hop__Group__151090 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__Hop__Group__1__Impl51118 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Hop__Group__2__Impl_in_rule__Hop__Group__251149 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__Hop__Group__3_in_rule__Hop__Group__251152 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_154_in_rule__Hop__Group__2__Impl51180 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Hop__Group__3__Impl_in_rule__Hop__Group__351211 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__Hop__Group__4_in_rule__Hop__Group__351214 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Hop__InterfacerefAssignment_3_in_rule__Hop__Group__3__Impl51241 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Hop__Group__4__Impl_in_rule__Hop__Group__451271 = new BitSet(new long[]{0x0000000020000000L,0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__Hop__Group__5_in_rule__Hop__Group__451274 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Hop__Group_4__0_in_rule__Hop__Group__4__Impl51301 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Hop__Group__5__Impl_in_rule__Hop__Group__551332 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__Hop__Group__5__Impl51360 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Hop__Group_4__0__Impl_in_rule__Hop__Group_4__051403 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_rule__Hop__Group_4__1_in_rule__Hop__Group_4__051406 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_155_in_rule__Hop__Group_4__0__Impl51434 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Hop__Group_4__1__Impl_in_rule__Hop__Group_4__151465 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Hop__NextHopAssignment_4_1_in_rule__Hop__Group_4__1__Impl51492 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EIntegerObject__Group__0__Impl_in_rule__EIntegerObject__Group__051526 = new BitSet(new long[]{0x0000000000000040L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__EIntegerObject__Group__1_in_rule__EIntegerObject__Group__051529 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__EIntegerObject__Group__0__Impl51558 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EIntegerObject__Group__1__Impl_in_rule__EIntegerObject__Group__151591 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__EIntegerObject__Group__1__Impl51618 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__0__Impl_in_rule__PhysicalNetworkInterface__Group__051651 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__1_in_rule__PhysicalNetworkInterface__Group__051654 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_156_in_rule__PhysicalNetworkInterface__Group__0__Impl51682 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__1__Impl_in_rule__PhysicalNetworkInterface__Group__151713 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__2_in_rule__PhysicalNetworkInterface__Group__151716 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__IdAssignment_1_in_rule__PhysicalNetworkInterface__Group__1__Impl51743 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__2__Impl_in_rule__PhysicalNetworkInterface__Group__251773 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__3_in_rule__PhysicalNetworkInterface__Group__251776 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__PhysicalNetworkInterface__Group__2__Impl51804 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__3__Impl_in_rule__PhysicalNetworkInterface__Group__351835 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__4_in_rule__PhysicalNetworkInterface__Group__351838 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_rule__PhysicalNetworkInterface__Group__3__Impl51866 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__4__Impl_in_rule__PhysicalNetworkInterface__Group__451897 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__5_in_rule__PhysicalNetworkInterface__Group__451900 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__NameAssignment_4_in_rule__PhysicalNetworkInterface__Group__4__Impl51927 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__5__Impl_in_rule__PhysicalNetworkInterface__Group__551957 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__6_in_rule__PhysicalNetworkInterface__Group__551960 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_5__0_in_rule__PhysicalNetworkInterface__Group__5__Impl51987 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__6__Impl_in_rule__PhysicalNetworkInterface__Group__652018 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__7_in_rule__PhysicalNetworkInterface__Group__652021 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_157_in_rule__PhysicalNetworkInterface__Group__6__Impl52049 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__7__Impl_in_rule__PhysicalNetworkInterface__Group__752080 = new BitSet(new long[]{0x0000000000000000L,0x0400040000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__8_in_rule__PhysicalNetworkInterface__Group__752083 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_7_in_rule__PhysicalNetworkInterface__Group__7__Impl52110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__8__Impl_in_rule__PhysicalNetworkInterface__Group__852140 = new BitSet(new long[]{0x0000000000000000L,0x0400040000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__9_in_rule__PhysicalNetworkInterface__Group__852143 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_8__0_in_rule__PhysicalNetworkInterface__Group__8__Impl52170 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__9__Impl_in_rule__PhysicalNetworkInterface__Group__952201 = new BitSet(new long[]{0x0000002000000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__10_in_rule__PhysicalNetworkInterface__Group__952204 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_122_in_rule__PhysicalNetworkInterface__Group__9__Impl52232 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__10__Impl_in_rule__PhysicalNetworkInterface__Group__1052263 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__11_in_rule__PhysicalNetworkInterface__Group__1052266 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__PerformanceAssignment_10_in_rule__PhysicalNetworkInterface__Group__10__Impl52293 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group__11__Impl_in_rule__PhysicalNetworkInterface__Group__1152323 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__PhysicalNetworkInterface__Group__11__Impl52351 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_5__0__Impl_in_rule__PhysicalNetworkInterface__Group_5__052406 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_5__1_in_rule__PhysicalNetworkInterface__Group_5__052409 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__PhysicalNetworkInterface__Group_5__0__Impl52437 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_5__1__Impl_in_rule__PhysicalNetworkInterface__Group_5__152468 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_5__2_in_rule__PhysicalNetworkInterface__Group_5__152471 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__PhysicalNetworkInterface__Group_5__1__Impl52499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_5__2__Impl_in_rule__PhysicalNetworkInterface__Group_5__252530 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_5__3_in_rule__PhysicalNetworkInterface__Group_5__252533 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_2_in_rule__PhysicalNetworkInterface__Group_5__2__Impl52560 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_5__3__Impl_in_rule__PhysicalNetworkInterface__Group_5__352590 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_5__4_in_rule__PhysicalNetworkInterface__Group_5__352593 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_5_3__0_in_rule__PhysicalNetworkInterface__Group_5__3__Impl52620 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_5__4__Impl_in_rule__PhysicalNetworkInterface__Group_5__452651 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__PhysicalNetworkInterface__Group_5__4__Impl52679 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_5_3__0__Impl_in_rule__PhysicalNetworkInterface__Group_5_3__052720 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_5_3__1_in_rule__PhysicalNetworkInterface__Group_5_3__052723 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__PhysicalNetworkInterface__Group_5_3__0__Impl52751 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_5_3__1__Impl_in_rule__PhysicalNetworkInterface__Group_5_3__152782 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_1_in_rule__PhysicalNetworkInterface__Group_5_3__1__Impl52809 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_8__0__Impl_in_rule__PhysicalNetworkInterface__Group_8__052843 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_8__1_in_rule__PhysicalNetworkInterface__Group_8__052846 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_106_in_rule__PhysicalNetworkInterface__Group_8__0__Impl52874 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_8__1__Impl_in_rule__PhysicalNetworkInterface__Group_8__152905 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_8__2_in_rule__PhysicalNetworkInterface__Group_8__152908 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__PhysicalNetworkInterface__Group_8__1__Impl52936 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_8__2__Impl_in_rule__PhysicalNetworkInterface__Group_8__252967 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_8__3_in_rule__PhysicalNetworkInterface__Group_8__252970 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__AddressesAssignment_8_2_in_rule__PhysicalNetworkInterface__Group_8__2__Impl52997 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_8__3__Impl_in_rule__PhysicalNetworkInterface__Group_8__353027 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_8__4_in_rule__PhysicalNetworkInterface__Group_8__353030 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_8_3__0_in_rule__PhysicalNetworkInterface__Group_8__3__Impl53057 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_8__4__Impl_in_rule__PhysicalNetworkInterface__Group_8__453088 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__PhysicalNetworkInterface__Group_8__4__Impl53116 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_8_3__0__Impl_in_rule__PhysicalNetworkInterface__Group_8_3__053157 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_8_3__1_in_rule__PhysicalNetworkInterface__Group_8_3__053160 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__PhysicalNetworkInterface__Group_8_3__0__Impl53188 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__Group_8_3__1__Impl_in_rule__PhysicalNetworkInterface__Group_8_3__153219 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__PhysicalNetworkInterface__AddressesAssignment_8_3_1_in_rule__PhysicalNetworkInterface__Group_8_3__1__Impl53246 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__0__Impl_in_rule__VirtualNetworkInterface__Group__053280 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__1_in_rule__VirtualNetworkInterface__Group__053283 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_158_in_rule__VirtualNetworkInterface__Group__0__Impl53311 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__1__Impl_in_rule__VirtualNetworkInterface__Group__153342 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__2_in_rule__VirtualNetworkInterface__Group__153345 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__IdAssignment_1_in_rule__VirtualNetworkInterface__Group__1__Impl53372 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__2__Impl_in_rule__VirtualNetworkInterface__Group__253402 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__3_in_rule__VirtualNetworkInterface__Group__253405 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__VirtualNetworkInterface__Group__2__Impl53433 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__3__Impl_in_rule__VirtualNetworkInterface__Group__353464 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__4_in_rule__VirtualNetworkInterface__Group__353467 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_rule__VirtualNetworkInterface__Group__3__Impl53495 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__4__Impl_in_rule__VirtualNetworkInterface__Group__453526 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__5_in_rule__VirtualNetworkInterface__Group__453529 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__NameAssignment_4_in_rule__VirtualNetworkInterface__Group__4__Impl53556 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__5__Impl_in_rule__VirtualNetworkInterface__Group__553586 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__6_in_rule__VirtualNetworkInterface__Group__553589 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_5__0_in_rule__VirtualNetworkInterface__Group__5__Impl53616 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__6__Impl_in_rule__VirtualNetworkInterface__Group__653647 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__7_in_rule__VirtualNetworkInterface__Group__653650 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_157_in_rule__VirtualNetworkInterface__Group__6__Impl53678 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__7__Impl_in_rule__VirtualNetworkInterface__Group__753709 = new BitSet(new long[]{0x0000000000000000L,0x0400040000000000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__8_in_rule__VirtualNetworkInterface__Group__753712 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__UsedProtocolStackAssignment_7_in_rule__VirtualNetworkInterface__Group__7__Impl53739 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__8__Impl_in_rule__VirtualNetworkInterface__Group__853769 = new BitSet(new long[]{0x0000000000000000L,0x0400040000000000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__9_in_rule__VirtualNetworkInterface__Group__853772 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_8__0_in_rule__VirtualNetworkInterface__Group__8__Impl53799 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__9__Impl_in_rule__VirtualNetworkInterface__Group__953830 = new BitSet(new long[]{0x0008066100000000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__10_in_rule__VirtualNetworkInterface__Group__953833 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_122_in_rule__VirtualNetworkInterface__Group__9__Impl53861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__10__Impl_in_rule__VirtualNetworkInterface__Group__1053892 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__11_in_rule__VirtualNetworkInterface__Group__1053895 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__PerformanceAssignment_10_in_rule__VirtualNetworkInterface__Group__10__Impl53922 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group__11__Impl_in_rule__VirtualNetworkInterface__Group__1153952 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__VirtualNetworkInterface__Group__11__Impl53980 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_5__0__Impl_in_rule__VirtualNetworkInterface__Group_5__054035 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_5__1_in_rule__VirtualNetworkInterface__Group_5__054038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__VirtualNetworkInterface__Group_5__0__Impl54066 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_5__1__Impl_in_rule__VirtualNetworkInterface__Group_5__154097 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_5__2_in_rule__VirtualNetworkInterface__Group_5__154100 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__VirtualNetworkInterface__Group_5__1__Impl54128 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_5__2__Impl_in_rule__VirtualNetworkInterface__Group_5__254159 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_5__3_in_rule__VirtualNetworkInterface__Group_5__254162 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_2_in_rule__VirtualNetworkInterface__Group_5__2__Impl54189 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_5__3__Impl_in_rule__VirtualNetworkInterface__Group_5__354219 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_5__4_in_rule__VirtualNetworkInterface__Group_5__354222 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_5_3__0_in_rule__VirtualNetworkInterface__Group_5__3__Impl54249 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_5__4__Impl_in_rule__VirtualNetworkInterface__Group_5__454280 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__VirtualNetworkInterface__Group_5__4__Impl54308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_5_3__0__Impl_in_rule__VirtualNetworkInterface__Group_5_3__054349 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_5_3__1_in_rule__VirtualNetworkInterface__Group_5_3__054352 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__VirtualNetworkInterface__Group_5_3__0__Impl54380 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_5_3__1__Impl_in_rule__VirtualNetworkInterface__Group_5_3__154411 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_1_in_rule__VirtualNetworkInterface__Group_5_3__1__Impl54438 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_8__0__Impl_in_rule__VirtualNetworkInterface__Group_8__054472 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_8__1_in_rule__VirtualNetworkInterface__Group_8__054475 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_106_in_rule__VirtualNetworkInterface__Group_8__0__Impl54503 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_8__1__Impl_in_rule__VirtualNetworkInterface__Group_8__154534 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_8__2_in_rule__VirtualNetworkInterface__Group_8__154537 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__VirtualNetworkInterface__Group_8__1__Impl54565 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_8__2__Impl_in_rule__VirtualNetworkInterface__Group_8__254596 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_8__3_in_rule__VirtualNetworkInterface__Group_8__254599 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__AddressesAssignment_8_2_in_rule__VirtualNetworkInterface__Group_8__2__Impl54626 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_8__3__Impl_in_rule__VirtualNetworkInterface__Group_8__354656 = new BitSet(new long[]{0x00000000A0000000L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_8__4_in_rule__VirtualNetworkInterface__Group_8__354659 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_8_3__0_in_rule__VirtualNetworkInterface__Group_8__3__Impl54686 = new BitSet(new long[]{0x0000000080000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_8__4__Impl_in_rule__VirtualNetworkInterface__Group_8__454717 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__VirtualNetworkInterface__Group_8__4__Impl54745 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_8_3__0__Impl_in_rule__VirtualNetworkInterface__Group_8_3__054786 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_8_3__1_in_rule__VirtualNetworkInterface__Group_8_3__054789 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__VirtualNetworkInterface__Group_8_3__0__Impl54817 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__Group_8_3__1__Impl_in_rule__VirtualNetworkInterface__Group_8_3__154848 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__VirtualNetworkInterface__AddressesAssignment_8_3_1_in_rule__VirtualNetworkInterface__Group_8_3__1__Impl54875 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__NetworkInfrastructure__DataCenterNameAssignment_354914 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__NetworkInfrastructure__DataCenterAltNameAssignment_554945 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNetworkTraffic_in_rule__NetworkInfrastructure__TrafficAssignment_754976 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNetworkStructure_in_rule__NetworkInfrastructure__StructureAssignment_955007 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNetworkConfiguration_in_rule__NetworkInfrastructure__ConfigurationAssignment_1155038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExperimentParam_in_rule__NetworkInfrastructure__ParamsAssignment_12_255069 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleExperimentParam_in_rule__NetworkInfrastructure__ParamsAssignment_12_3_155100 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEBoolean_in_rule__VirtualNetworkInterfacePerfSpec__IsUpAssignment_455131 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__VirtualNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_655162 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEInt_in_rule__VirtualNetworkInterfacePerfSpec__MTUAssignment_855193 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSpeedUnit_in_rule__VirtualNetworkInterfacePerfSpec__InterfaceSpeedAssignment_1055224 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEBoolean_in_rule__PhysicalNetworkInterfacePerfSpec__IsUpAssignment_455255 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__PhysicalNetworkInterfacePerfSpec__PacketProcessingTimeAssignment_655286 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEInt_in_rule__PhysicalNetworkInterfacePerfSpec__MTUAssignment_855317 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSpeedUnit_in_rule__PhysicalNetworkInterfacePerfSpec__InterfaceSpeedAssignment_1055348 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__VirtualLinkPerfSpec__PropagationDelayAssignment_455379 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__VirtualLinkPerfSpec__MaxSupportedBandwidthAssignment_5_155410 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__PhysicalLinkPerfSpec__PropagationDelayAssignment_455441 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__PhysicalLinkPerfSpec__MaxSupportedBandwidthAssignment_5_155472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDataPlanePerfSpec_in_rule__IntermediateNodePerfSpec__DataplaneAssignment_355503 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleControlPlanePerfSpec_in_rule__IntermediateNodePerfSpec__ControlplaneAssignment_555534 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__ControlPlanePerfSpec__ProcessingLatencyAssignment_355565 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__ControlPlanePerfSpec__ProcessingBandwidthReqPSAssignment_555596 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__ControlPlanePerfSpec__PacketProcessingTimeAssignment_755627 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__DataPlanePerfSpec__ForwardingLatencyAssignment_355658 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__DataPlanePerfSpec__ForwardingBandwidthPPSAssignment_555689 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__DataPlanePerfSpec__ForwardingBandwidthBPSAssignment_755720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__DataPlanePerfSpec__PacketProcessingTimeAssignment_955751 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__EndNodePerfSpec__SoftwareLayersDelayAssignment_355782 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDataPlanePerfSpec_in_rule__EndNodePerfSpec__DataplaneAssignment_4_155813 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleControlPlanePerfSpec_in_rule__EndNodePerfSpec__ControlplaneAssignment_5_155844 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFlow_in_rule__NetworkTraffic__FlowsAssignment_3_255875 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFlow_in_rule__NetworkTraffic__FlowsAssignment_3_3_155906 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSoftwareComponent_in_rule__NetworkTraffic__SoftwareAssignment_4_255937 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSoftwareComponent_in_rule__NetworkTraffic__SoftwareAssignment_4_3_155968 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNode_in_rule__NetworkStructure__NodesAssignment_3_255999 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNode_in_rule__NetworkStructure__NodesAssignment_3_3_156030 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLink_in_rule__NetworkStructure__LinksAssignment_4_256061 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLink_in_rule__NetworkStructure__LinksAssignment_4_3_156092 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProtocolsRepository_in_rule__NetworkConfiguration__ProtocolsAndStacksAssignment_356123 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleRoutesRepository_in_rule__NetworkConfiguration__RoutesAssignment_556154 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__ExperimentParam__NameAssignment_156185 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__ExperimentParam__ValueAssignment_456216 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__SoftwareComponent__IdAssignment_156247 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__SoftwareComponent__NameAssignment_456278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__SoftwareComponent__AlternativeNamesAssignment_5_256309 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__SoftwareComponent__AlternativeNamesAssignment_5_3_156340 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__SoftwareComponent__DeployedOnAssignment_756375 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTrafficSource_in_rule__SoftwareComponent__TrafficSourcesAssignment_8_256410 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTrafficSource_in_rule__SoftwareComponent__TrafficSourcesAssignment_8_3_156441 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__EntityAddress__AddressAssignment_3_156472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__EntityAddress__AddressGivenByAssignment_4_156507 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_159_in_rule__ONOFFFlow__StartStateAssignment_056547 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__ONOFFFlow__IdAssignment_256586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__ONOFFFlow__NameAssignment_556617 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__ONOFFFlow__AlternativeNamesAssignment_6_256648 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__ONOFFFlow__AlternativeNamesAssignment_6_3_156679 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__ONOFFFlow__DestinationSoftwareComponentAssignment_7_156714 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__ONOFFFlow__SourceSoftwareComponentAssignment_8_156753 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEntityAddress_in_rule__ONOFFFlow__DestinationAddressesAssignment_9_256788 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEntityAddress_in_rule__ONOFFFlow__DestinationAddressesAssignment_9_3_156819 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__ONOFFFlow__ONstateIATAssignment_1156850 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__ONOFFFlow__ONstateDurationAssignment_1356881 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__ONOFFFlow__OFFstateDurationAssignment_1556912 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__ONOFFFlow__PacketLengthAssignment_1756943 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__GenericFlow__IdAssignment_156974 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__GenericFlow__NameAssignment_457005 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__GenericFlow__AlternativeNamesAssignment_5_257036 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__GenericFlow__AlternativeNamesAssignment_5_3_157067 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__GenericFlow__DestinationSoftwareComponentAssignment_6_157102 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__GenericFlow__SourceSoftwareComponentAssignment_7_157141 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEntityAddress_in_rule__GenericFlow__DestinationAddressesAssignment_8_257176 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEntityAddress_in_rule__GenericFlow__DestinationAddressesAssignment_8_3_157207 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__GenericFlow__DataSizeAssignment_1057238 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_160_in_rule__NetworkProtocol__DeliveryGuaranteedAssignment_057274 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__NetworkProtocol__NameAssignment_257313 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__NetworkProtocol__AlternativeNamesAssignment_4_257344 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__NetworkProtocol__AlternativeNamesAssignment_4_3_157375 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEInt_in_rule__NetworkProtocol__MtuAssignment_657406 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEInt_in_rule__NetworkProtocol__HeadersLengthAssignment_857437 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEInt_in_rule__NetworkProtocol__DataUnitLengthAssignment_1057468 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEBoolean_in_rule__NetworkProtocol__ConnectionlessAssignment_11_157499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEDouble_in_rule__ConstantDoubleVariable__ValueAssignment_357530 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDNIUnit_in_rule__ConstantDoubleVariable__UnitAssignment_4_157561 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleELong_in_rule__ConstantLongVariable__ValueAssignment_357592 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDNIUnit_in_rule__ConstantLongVariable__UnitAssignment_4_157623 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDNIUnit_in_rule__RandomVariable__UnitAssignment_2_157654 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFunction_in_rule__RandomVariable__CdfAssignment_457685 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEInt_in_rule__ContinuousFunction__NumArgsAssignment_357716 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__ContinuousFunction__EquationAssignment_557747 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDNIUnit_in_rule__ContinuousFunction__UnitAssignment_6_157778 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEInt_in_rule__DiscreteFunction__NumArgsAssignment_357809 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDNIUnit_in_rule__DiscreteFunction__UnitAssignment_4_157840 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDataSeries_in_rule__DiscreteFunction__XAssignment_757871 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDataSeries_in_rule__DiscreteFunction__XAssignment_8_157902 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDataSeries_in_rule__DiscreteFunction__YAssignment_1157933 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleUnitPrefix_in_rule__SpeedUnit__PrefixAssignment_357964 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEFloat_in_rule__SpeedUnit__ValueAssignment_557995 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleSpeed_in_rule__SpeedUnit__UnitAssignment_758026 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEDouble_in_rule__DataSeries__DataAssignment_3_258057 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEDouble_in_rule__DataSeries__DataAssignment_3_3_158088 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__TrafficSource__IdAssignment_158119 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__TrafficSource__NameAssignment_458150 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__TrafficSource__AlternativeNamesAssignment_5_258181 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__TrafficSource__AlternativeNamesAssignment_5_3_158212 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEntityAddress_in_rule__TrafficSource__AddressesAssignment_6_258243 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEntityAddress_in_rule__TrafficSource__AddressesAssignment_6_3_158274 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleWorkload_in_rule__TrafficSource__WorkloadAssignment_958305 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleWorkload_in_rule__TrafficSource__WorkloadAssignment_10_158336 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAbstractAction_in_rule__GenericWorkload__ActionsAssignment_3_258367 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAbstractAction_in_rule__GenericWorkload__ActionsAssignment_3_3_158398 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAbstractAction_in_rule__BranchAction__InternAssignment_458429 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAbstractAction_in_rule__BranchAction__InternAssignment_5_158460 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAbstractAction_in_rule__LoopAction__InternAssignment_358491 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__LoopAction__NumIterationsAssignment_558522 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAbstractAction_in_rule__SequenceAction__InternAssignment_458553 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAbstractAction_in_rule__SequenceAction__InternAssignment_5_158584 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__TransmitAction__FlowAssignment_358619 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDependency_in_rule__WaitAction__WaitTimeAssignment_358654 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__VirtualNode__IdAssignment_158685 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__VirtualNode__NameAssignment_458716 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__VirtualNode__AlternativeNamesAssignment_5_258747 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__VirtualNode__AlternativeNamesAssignment_5_3_158778 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__VirtualNode__SoftwareAssignment_6_258813 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__VirtualNode__SoftwareAssignment_6_3_158852 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__VirtualNode__HostedOnAssignment_858891 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePerformanceSpecification_in_rule__VirtualNode__PerformanceAssignment_1058926 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleVirtualNetworkInterface_in_rule__VirtualNode__InterfacesAssignment_11_258957 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleVirtualNetworkInterface_in_rule__VirtualNode__InterfacesAssignment_11_3_158988 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__PhysicalNode__IdAssignment_159019 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__PhysicalNode__NameAssignment_459050 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__PhysicalNode__AlternativeNamesAssignment_5_259081 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__PhysicalNode__AlternativeNamesAssignment_5_3_159112 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__PhysicalNode__SoftwareAssignment_6_259147 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__PhysicalNode__SoftwareAssignment_6_3_159186 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__PhysicalNode__HostsAssignment_7_259225 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__PhysicalNode__HostsAssignment_7_3_159264 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePerformanceSpecification_in_rule__PhysicalNode__PerformanceAssignment_959299 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNetworkInterface_in_rule__PhysicalNode__InterfacesAssignment_10_259330 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNetworkInterface_in_rule__PhysicalNode__InterfacesAssignment_10_3_159361 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__PhysicalLink__IdAssignment_159392 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__PhysicalLink__NameAssignment_459423 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__PhysicalLink__AlternativeNamesAssignment_5_259454 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__PhysicalLink__AlternativeNamesAssignment_5_3_159485 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__PhysicalLink__ConnectsAssignment_859520 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__PhysicalLink__ConnectsAssignment_9_159559 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePerformanceSpecification_in_rule__PhysicalLink__PerformanceAssignment_1259594 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__VirtualLink__IdAssignment_159625 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__VirtualLink__NameAssignment_459656 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__VirtualLink__AlternativeNamesAssignment_5_259687 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__VirtualLink__AlternativeNamesAssignment_5_3_159718 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__VirtualLink__ConnectsAssignment_859753 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__VirtualLink__ConnectsAssignment_9_159792 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePerformanceSpecification_in_rule__VirtualLink__PerformanceAssignment_1259827 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProtocolStack_in_rule__ProtocolsRepository__StacksAssignment_2_259858 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProtocolStack_in_rule__ProtocolsRepository__StacksAssignment_2_3_159889 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNetworkProtocol_in_rule__ProtocolsRepository__ProtocolsAssignment_559920 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNetworkProtocol_in_rule__ProtocolsRepository__ProtocolsAssignment_6_159951 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleRoute_in_rule__RoutesRepository__RoutesAssignment_3_259982 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleRoute_in_rule__RoutesRepository__RoutesAssignment_3_3_160013 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFlowRoute_in_rule__RoutesRepository__FlowRoutesAssignment_4_260044 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFlowRoute_in_rule__RoutesRepository__FlowRoutesAssignment_4_3_160075 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDirection_in_rule__RoutesRepository__DirectionsAssignment_5_260106 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDirection_in_rule__RoutesRepository__DirectionsAssignment_5_3_160137 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__ProtocolStack__NameAssignment_160168 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__ProtocolStack__AlternativeNamesAssignment_3_260199 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__ProtocolStack__AlternativeNamesAssignment_3_3_160230 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProtocolLayer_in_rule__ProtocolStack__LayersAssignment_660261 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleProtocolLayer_in_rule__ProtocolStack__LayersAssignment_7_160292 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__ProtocolLayer__NameAssignment_160323 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__ProtocolLayer__AlternativeNamesAssignment_3_260354 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__ProtocolLayer__AlternativeNamesAssignment_3_3_160385 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__ProtocolLayer__ProtocolAssignment_560420 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__ProtocolLayer__IsCarriedByAssignment_6_160459 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__ProtocolLayer__CarriesAssignment_7_160498 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__Route__IdAssignment_160533 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__Route__NameAssignment_460564 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__Route__AlternativeNamesAssignment_5_260595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__Route__AlternativeNamesAssignment_5_3_160626 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEIntegerObject_in_rule__Route__NumHopsAssignment_6_160657 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__Route__StartAssignment_860692 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__Route__EndAssignment_1060731 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleHop_in_rule__Route__HopsAssignment_11_160766 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__FlowRoute__IdAssignment_160797 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__FlowRoute__NameAssignment_460828 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__FlowRoute__AlternativeNamesAssignment_5_260859 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__FlowRoute__AlternativeNamesAssignment_5_3_160890 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEIntegerObject_in_rule__FlowRoute__NumHopsAssignment_6_160921 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__FlowRoute__FlowAssignment_860956 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__FlowRoute__StartAssignment_1060995 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__FlowRoute__EndAssignment_1261034 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleHop_in_rule__FlowRoute__HopsAssignment_13_161069 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_161_in_rule__Direction__IsDefaultAssignment_061105 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__Direction__IdAssignment_261144 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__Direction__NameAssignment_561175 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__Direction__AlternativeNamesAssignment_6_261206 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__Direction__AlternativeNamesAssignment_6_3_161237 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleELong_in_rule__Direction__DistanceAssignment_7_161268 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__Direction__OnNodeAssignment_961303 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__Direction__FlowAssignment_10_161342 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__Direction__ViaAssignment_1261381 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__Hop__InterfacerefAssignment_361420 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleHop_in_rule__Hop__NextHopAssignment_4_161455 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__PhysicalNetworkInterface__IdAssignment_161486 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__PhysicalNetworkInterface__NameAssignment_461517 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_261548 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__PhysicalNetworkInterface__AlternativeNamesAssignment_5_3_161579 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__PhysicalNetworkInterface__UsedProtocolStackAssignment_761614 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEntityAddress_in_rule__PhysicalNetworkInterface__AddressesAssignment_8_261649 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEntityAddress_in_rule__PhysicalNetworkInterface__AddressesAssignment_8_3_161680 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePhysicalNetworkInterfacePerfSpec_in_rule__PhysicalNetworkInterface__PerformanceAssignment_1061711 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__VirtualNetworkInterface__IdAssignment_161742 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__VirtualNetworkInterface__NameAssignment_461773 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_261804 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__VirtualNetworkInterface__AlternativeNamesAssignment_5_3_161835 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEString_in_rule__VirtualNetworkInterface__UsedProtocolStackAssignment_761870 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEntityAddress_in_rule__VirtualNetworkInterface__AddressesAssignment_8_261905 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEntityAddress_in_rule__VirtualNetworkInterface__AddressesAssignment_8_3_161936 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rulePerformanceSpecification_in_rule__VirtualNetworkInterface__PerformanceAssignment_1061967 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+
+}
\ No newline at end of file
diff --git a/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/internal/DNITextActivator.java b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/internal/DNITextActivator.java
new file mode 100644
index 00000000..cc3543c4
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/src-gen/tools/descatres/dml/dni/text/ui/internal/DNITextActivator.java
@@ -0,0 +1,95 @@
+/*
+ * generated by Xtext
+ */
+package tools.descatres.dml.dni.text.ui.internal;
+
+import java.util.Collections;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.shared.SharedStateModule;
+import org.eclipse.xtext.util.Modules2;
+import org.osgi.framework.BundleContext;
+
+import com.google.common.collect.Maps;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class DNITextActivator extends AbstractUIPlugin {
+	
+	public static final String TOOLS_DESCATRES_DML_DNI_TEXT_DNITEXT = "tools.descatres.dml.dni.text.DNIText";
+	
+	private static final Logger logger = Logger.getLogger(DNITextActivator.class);
+	
+	private static DNITextActivator INSTANCE;
+	
+	private Map<String, Injector> injectors = Collections.synchronizedMap(Maps.<String, Injector> newHashMapWithExpectedSize(1));
+	
+	@Override
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		INSTANCE = this;
+	}
+	
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		injectors.clear();
+		INSTANCE = null;
+		super.stop(context);
+	}
+	
+	public static DNITextActivator getInstance() {
+		return INSTANCE;
+	}
+	
+	public Injector getInjector(String language) {
+		synchronized (injectors) {
+			Injector injector = injectors.get(language);
+			if (injector == null) {
+				injectors.put(language, injector = createInjector(language));
+			}
+			return injector;
+		}
+	}
+	
+	protected Injector createInjector(String language) {
+		try {
+			Module runtimeModule = getRuntimeModule(language);
+			Module sharedStateModule = getSharedStateModule();
+			Module uiModule = getUiModule(language);
+			Module mergedModule = Modules2.mixin(runtimeModule, sharedStateModule, uiModule);
+			return Guice.createInjector(mergedModule);
+		} catch (Exception e) {
+			logger.error("Failed to create injector for " + language);
+			logger.error(e.getMessage(), e);
+			throw new RuntimeException("Failed to create injector for " + language, e);
+		}
+	}
+
+	protected Module getRuntimeModule(String grammar) {
+		if (TOOLS_DESCATRES_DML_DNI_TEXT_DNITEXT.equals(grammar)) {
+			return new tools.descatres.dml.dni.text.DNITextRuntimeModule();
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getUiModule(String grammar) {
+		if (TOOLS_DESCATRES_DML_DNI_TEXT_DNITEXT.equals(grammar)) {
+			return new tools.descatres.dml.dni.text.ui.DNITextUiModule(this);
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getSharedStateModule() {
+		return new SharedStateModule();
+	}
+	
+}
diff --git a/tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/DNITextUiModule.java b/tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/DNITextUiModule.java
new file mode 100644
index 00000000..7d011dea
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/DNITextUiModule.java
@@ -0,0 +1,15 @@
+/*
+ * generated by Xtext
+ */
+package tools.descatres.dml.dni.text.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Use this class to register components to be used within the IDE.
+ */
+public class DNITextUiModule extends tools.descatres.dml.dni.text.ui.AbstractDNITextUiModule {
+	public DNITextUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	}
+}
diff --git a/tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/contentassist/DNITextProposalProvider.xtend b/tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/contentassist/DNITextProposalProvider.xtend
new file mode 100644
index 00000000..9bfa9f36
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/contentassist/DNITextProposalProvider.xtend
@@ -0,0 +1,13 @@
+/*
+ * generated by Xtext
+ */
+package tools.descatres.dml.dni.text.ui.contentassist
+
+import tools.descatres.dml.dni.text.ui.contentassist.AbstractDNITextProposalProvider
+
+/**
+ * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#content-assist
+ * on how to customize the content assistant.
+ */
+class DNITextProposalProvider extends AbstractDNITextProposalProvider {
+}
diff --git a/tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/labeling/DNITextDescriptionLabelProvider.xtend b/tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/labeling/DNITextDescriptionLabelProvider.xtend
new file mode 100644
index 00000000..f08e1854
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/labeling/DNITextDescriptionLabelProvider.xtend
@@ -0,0 +1,24 @@
+/*
+ * generated by Xtext
+ */
+package tools.descatres.dml.dni.text.ui.labeling
+
+//import org.eclipse.xtext.resource.IEObjectDescription
+
+/**
+ * Provides labels for IEObjectDescriptions and IResourceDescriptions.
+ * 
+ * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#label-provider
+ */
+class DNITextDescriptionLabelProvider extends org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider {
+
+	// Labels and icons can be computed like this:
+	
+//	override text(IEObjectDescription ele) {
+//		ele.name.toString
+//	}
+//	 
+//	override image(IEObjectDescription ele) {
+//		ele.EClass.name + '.gif'
+//	}	 
+}
diff --git a/tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/labeling/DNITextLabelProvider.xtend b/tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/labeling/DNITextLabelProvider.xtend
new file mode 100644
index 00000000..0ca06430
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/labeling/DNITextLabelProvider.xtend
@@ -0,0 +1,29 @@
+/*
+ * generated by Xtext
+ */
+package tools.descatres.dml.dni.text.ui.labeling
+
+import com.google.inject.Inject
+
+/**
+ * Provides labels for EObjects.
+ * 
+ * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#label-provider
+ */
+class DNITextLabelProvider extends org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider {
+
+	@Inject
+	new(org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider delegate) {
+		super(delegate);
+	}
+
+	// Labels and icons can be computed like this:
+	
+//	def text(Greeting ele) {
+//		'A greeting to ' + ele.name
+//	}
+//
+//	def image(Greeting ele) {
+//		'Greeting.gif'
+//	}
+}
diff --git a/tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/outline/DNITextOutlineTreeProvider.xtend b/tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/outline/DNITextOutlineTreeProvider.xtend
new file mode 100644
index 00000000..3e2f76ee
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/outline/DNITextOutlineTreeProvider.xtend
@@ -0,0 +1,13 @@
+/*
+ * generated by Xtext
+ */
+package tools.descatres.dml.dni.text.ui.outline
+
+/**
+ * Customization of the default outline structure.
+ *
+ * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#outline
+ */
+class DNITextOutlineTreeProvider extends org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider {
+	
+}
diff --git a/tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/quickfix/DNITextQuickfixProvider.xtend b/tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/quickfix/DNITextQuickfixProvider.xtend
new file mode 100644
index 00000000..cdde3f41
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/src/tools/descatres/dml/dni/text/ui/quickfix/DNITextQuickfixProvider.xtend
@@ -0,0 +1,26 @@
+/*
+ * generated by Xtext
+ */
+package tools.descatres.dml.dni.text.ui.quickfix
+
+//import org.eclipse.xtext.ui.editor.quickfix.Fix
+//import org.eclipse.xtext.ui.editor.quickfix.IssueResolutionAcceptor
+//import org.eclipse.xtext.validation.Issue
+
+/**
+ * Custom quickfixes.
+ *
+ * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#quick-fixes
+ */
+class DNITextQuickfixProvider extends org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider {
+
+//	@Fix(MyDslValidator::INVALID_NAME)
+//	def capitalizeName(Issue issue, IssueResolutionAcceptor acceptor) {
+//		acceptor.accept(issue, 'Capitalize name', 'Capitalize the name.', 'upcase.png') [
+//			context |
+//			val xtextDocument = context.xtextDocument
+//			val firstLetter = xtextDocument.get(issue.offset, 1)
+//			xtextDocument.replace(issue.offset, 1, firstLetter.toUpperCase)
+//		]
+//	}
+}
diff --git a/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/contentassist/.DNITextProposalProvider.java._trace b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/contentassist/.DNITextProposalProvider.java._trace
new file mode 100644
index 0000000000000000000000000000000000000000..86676661ece1a3480373a7ea8cbeed51d6c32d00
GIT binary patch
literal 410
zcma)$F$w}P5Je{{D7xC(DBi%df?#E{2x4I^1UE%s-N+`&wjRJ^*a)7-quBaqH!gyW
z122E_^D_()wFH$VZk5si%HAD3K^sJZR^Hmw$wa%o^0`KLNM({4>2=}d$;iFUyw1FG
z&NwfZ>v)TYO>U3YsT6uPiO#15G6^O&0N1#Z@*Xy!5j^gj;f)?>UVvBWgP--_l@mC4
z1sv>xPmsM1=m9P<$6){)VWOC!kAoLMd7@CzAz*{SM6n1Sf37E9aG8Mb;4XM|kbnOb
Fq&I3}D+d4o

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/contentassist/.DNITextProposalProvider.xtendbin b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/contentassist/.DNITextProposalProvider.xtendbin
new file mode 100644
index 0000000000000000000000000000000000000000..c69e276bf5d3e466571caab08b722829d27483ca
GIT binary patch
literal 1762
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
Rf=U7aB7)T<*yaAQ{s#Q_-uwUn

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/contentassist/DNITextProposalProvider.java b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/contentassist/DNITextProposalProvider.java
new file mode 100644
index 00000000..70e1d85c
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/contentassist/DNITextProposalProvider.java
@@ -0,0 +1,14 @@
+/**
+ * generated by Xtext
+ */
+package tools.descatres.dml.dni.text.ui.contentassist;
+
+import tools.descatres.dml.dni.text.ui.contentassist.AbstractDNITextProposalProvider;
+
+/**
+ * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#content-assist
+ * on how to customize the content assistant.
+ */
+@SuppressWarnings("all")
+public class DNITextProposalProvider extends AbstractDNITextProposalProvider {
+}
diff --git a/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/.DNITextDescriptionLabelProvider.java._trace b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/.DNITextDescriptionLabelProvider.java._trace
new file mode 100644
index 0000000000000000000000000000000000000000..8abba43aadc7b67115c1ea4dcdeb909a5dcefb3c
GIT binary patch
literal 413
zcma)$y$ZrG6oqf9qTt`yMbRfPgOlRm&_$5y;0sh6B~V*!qx2D++<XZ~pU`vLAcBh*
zzMSOb<PajN3MxjtN~JE8y%mu&gw}v7$Tvw6WinLRE-<OW?ik51*3zil$cvUyuvL+c
z57P4&8+aa)sXiH<#7n+fr^!`^DjnrU#UV-^z|$|KINQ%q4<7F;_KqGnvsnin@bg0s
zawCHD1RQJv4&DHJ4bTESVvgku*szUa41Z=l7s`!d4;_HE1&v~2J%0RYyj$}-7{Hs_
LP!Z(Ue+B6cfSf5;

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/.DNITextDescriptionLabelProvider.xtendbin b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/.DNITextDescriptionLabelProvider.xtendbin
new file mode 100644
index 0000000000000000000000000000000000000000..6312618ce6182c8cde7f8278ff2f9e0c7208af5b
GIT binary patch
literal 1869
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
UpP^CIH8$geHr9=eJ>?JYKa4vCf&c&j

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/.DNITextLabelProvider.java._trace b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/.DNITextLabelProvider.java._trace
new file mode 100644
index 0000000000000000000000000000000000000000..3ecce2bc7f13ca87da84deddc7c67d7c3005edc3
GIT binary patch
literal 894
zcmbu7KQ9D97{+H7LHz$05~r3ZY)5k{6cV{eh)Utujclx4*;`zp^ffdZg~})J8GHg?
zK_dzZzh`f5v!S`f<equweeO5!yfb&kn0{-D;WawZ%n{{X626IpsAkP(o~Cij55m@I
zGtWX+7qK5Ck)Ma{+`o$axOo!BQF7*QHFgg0c9rjC>2(x@*=jovlYmMd(pc(*B6l5_
z8lKjD?mP2Ien>KmX3?Lv1gavSxkCcSkOK>Eh<p@j*juJoG>*CzKk#qJ1*rv{Zy$&P
zCY)69%XtFJiZ3LKr~=vr@-+t)AiHf(Ae-zPQ;a6jj0`^e#B-#+r%=)3J5fE#kOUqP
z^?u!USQ>ADX$4imWAbfOg1n<Qf}zX&2J2OjV|oMG<SjGl7pPXecV2n4z;!0wc-l#q
vd1O701gd~;_&@N;Rntk5{yjxSJyG>&f$~aF>;{uAQw5)$SAy!XC(!%=#Opau

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/.DNITextLabelProvider.xtendbin b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/.DNITextLabelProvider.xtendbin
new file mode 100644
index 0000000000000000000000000000000000000000..0ba70c5f9286e1f61900512a50d40897cae1468c
GIT binary patch
literal 2426
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
J#P0!s{{cU`Nk{+y

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/DNITextDescriptionLabelProvider.java b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/DNITextDescriptionLabelProvider.java
new file mode 100644
index 00000000..e186c94c
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/DNITextDescriptionLabelProvider.java
@@ -0,0 +1,15 @@
+/**
+ * generated by Xtext
+ */
+package tools.descatres.dml.dni.text.ui.labeling;
+
+import org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider;
+
+/**
+ * Provides labels for IEObjectDescriptions and IResourceDescriptions.
+ * 
+ * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#label-provider
+ */
+@SuppressWarnings("all")
+public class DNITextDescriptionLabelProvider extends DefaultDescriptionLabelProvider {
+}
diff --git a/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/DNITextLabelProvider.java b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/DNITextLabelProvider.java
new file mode 100644
index 00000000..45b8634e
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/labeling/DNITextLabelProvider.java
@@ -0,0 +1,21 @@
+/**
+ * generated by Xtext
+ */
+package tools.descatres.dml.dni.text.ui.labeling;
+
+import com.google.inject.Inject;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider;
+
+/**
+ * Provides labels for EObjects.
+ * 
+ * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#label-provider
+ */
+@SuppressWarnings("all")
+public class DNITextLabelProvider extends DefaultEObjectLabelProvider {
+  @Inject
+  public DNITextLabelProvider(final AdapterFactoryLabelProvider delegate) {
+    super(delegate);
+  }
+}
diff --git a/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/outline/.DNITextOutlineTreeProvider.java._trace b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/outline/.DNITextOutlineTreeProvider.java._trace
new file mode 100644
index 0000000000000000000000000000000000000000..683d5a2056fdb459084e60dfa18e2dd3f3350190
GIT binary patch
literal 407
zcma)$O$x#=6og;=1+BUlJ%Z*Cy3kD(>;=RG3Dg$SwDc6Za_P}rc?h@8YoiEmeDHN%
zrqgMNs3oWxajlg`Q1(IyYa0ZDRxVBBOe&on_ReZ-r&y}QNT*9Db0gE-#U{~m8LlH(
zoB9}8t+zHUjM8>qI-MxgH2}}Fmg?-UK@)hqH~l-hVR?cs7=oX>!K)fLcmW*j10SR_
z_73O)9x=n?2m<hKykob3L+o>-*g?l&;NixH_c-`zEWG&@6#UDD4^=^YE&dA93#c6@
AbpQYW

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/outline/.DNITextOutlineTreeProvider.xtendbin b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/outline/.DNITextOutlineTreeProvider.xtendbin
new file mode 100644
index 0000000000000000000000000000000000000000..a7ac26d49e2d2b9c66e6bb79232e385a1307cd75
GIT binary patch
literal 1738
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

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/outline/DNITextOutlineTreeProvider.java b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/outline/DNITextOutlineTreeProvider.java
new file mode 100644
index 00000000..fc0451a1
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/outline/DNITextOutlineTreeProvider.java
@@ -0,0 +1,15 @@
+/**
+ * generated by Xtext
+ */
+package tools.descatres.dml.dni.text.ui.outline;
+
+import org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider;
+
+/**
+ * Customization of the default outline structure.
+ * 
+ * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#outline
+ */
+@SuppressWarnings("all")
+public class DNITextOutlineTreeProvider extends DefaultOutlineTreeProvider {
+}
diff --git a/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/quickfix/.DNITextQuickfixProvider.java._trace b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/quickfix/.DNITextQuickfixProvider.java._trace
new file mode 100644
index 0000000000000000000000000000000000000000..bfe4a6124450452f3ccbbcb4ead809aeb672fab5
GIT binary patch
literal 405
zcma)&O$x#=5QQgJ5&T_BL9bvoE?tV?#vkYfN*f_sTW!<QW4QBbo<lr<Z`vTD8v`FR
z^YZ2qLPSkL)e+~q(h!xk4UyAFZ2?!%(j-Zg$xvm1Z&HQs6v;5w(x}qNT+2(YgX3P8
za<N`{&~|p-rb(egl}<~e;t*jCz-LmIYPOG{F*NQSdq+1kchCj{@bfZgRRS9ez{W0M
z;}hhd19+K_;Km0%U=zgw`oqpHDkq8=>Im>BFi5OEi8Wq)CwdsZjaO*%Pa|*tWuzCA
C>L*74

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/quickfix/.DNITextQuickfixProvider.xtendbin b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/quickfix/.DNITextQuickfixProvider.xtendbin
new file mode 100644
index 0000000000000000000000000000000000000000..84e97716307301668933ea05bfcbab7e3747806b
GIT binary patch
literal 1704
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
I1)z=WAH<BrDF6Tf

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/quickfix/DNITextQuickfixProvider.java b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/quickfix/DNITextQuickfixProvider.java
new file mode 100644
index 00000000..012f8888
--- /dev/null
+++ b/tools.descartes.dml.dni.text.ui/xtend-gen/tools/descatres/dml/dni/text/ui/quickfix/DNITextQuickfixProvider.java
@@ -0,0 +1,15 @@
+/**
+ * generated by Xtext
+ */
+package tools.descatres.dml.dni.text.ui.quickfix;
+
+import org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider;
+
+/**
+ * Custom quickfixes.
+ * 
+ * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#quick-fixes
+ */
+@SuppressWarnings("all")
+public class DNITextQuickfixProvider extends DefaultQuickfixProvider {
+}
-- 
GitLab